/*
 * ! jQuery UI 1.8.12
 * 
 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) Dual licensed under
 * the MIT or GPL Version 2 licenses. http://jquery.org/license
 * 
 * http://docs.jquery.com/UI
 */
(function(b, d) {
	function e(f) {
		return !b(f).parents().andSelf().filter(function() {
			return b.curCSS(this, "visibility") === "hidden"
					|| b.expr.filters.hidden(this)
		}).length
	}
	b.ui = b.ui || {};
	if (!b.ui.version) {
		b.extend(b.ui, {
					version : "1.8.12",
					keyCode : {
						ALT : 18,
						BACKSPACE : 8,
						CAPS_LOCK : 20,
						COMMA : 188,
						COMMAND : 91,
						COMMAND_LEFT : 91,
						COMMAND_RIGHT : 93,
						CONTROL : 17,
						DELETE : 46,
						DOWN : 40,
						END : 35,
						ENTER : 13,
						ESCAPE : 27,
						HOME : 36,
						INSERT : 45,
						LEFT : 37,
						MENU : 93,
						NUMPAD_ADD : 107,
						NUMPAD_DECIMAL : 110,
						NUMPAD_DIVIDE : 111,
						NUMPAD_ENTER : 108,
						NUMPAD_MULTIPLY : 106,
						NUMPAD_SUBTRACT : 109,
						PAGE_DOWN : 34,
						PAGE_UP : 33,
						PERIOD : 190,
						RIGHT : 39,
						SHIFT : 16,
						SPACE : 32,
						TAB : 9,
						UP : 38,
						WINDOWS : 91
					}
				});
		b.fn.extend({
					_focus : b.fn.focus,
					focus : function(f, g) {
						return typeof f === "number" ? this.each(function() {
									var a = this;
									setTimeout(function() {
												b(a).focus();
												g && g.call(a)
											}, f)
								}) : this._focus.apply(this, arguments)
					},
					scrollParent : function() {
						var f;
						f = b.browser.msie
								&& /(static|relative)/.test(this
										.css("position"))
								|| /absolute/.test(this.css("position")) ? this
								.parents().filter(function() {
									return /(relative|absolute|fixed)/.test(b
											.curCSS(this, "position", 1))
											&& /(auto|scroll)/.test(b.curCSS(
													this, "overflow", 1)
													+ b.curCSS(this,
															"overflow-y", 1)
													+ b.curCSS(this,
															"overflow-x", 1))
								}).eq(0) : this.parents().filter(function() {
							return /(auto|scroll)/.test(b.curCSS(this,
									"overflow", 1)
									+ b.curCSS(this, "overflow-y", 1)
									+ b.curCSS(this, "overflow-x", 1))
						}).eq(0);
						return /fixed/.test(this.css("position")) || !f.length
								? b(document)
								: f
					},
					zIndex : function(f) {
						if (f !== d)
							return this.css("zIndex", f);
						if (this.length) {
							f = b(this[0]);
							for (var g; f.length && f[0] !== document;) {
								g = f.css("position");
								if (g === "absolute" || g === "relative"
										|| g === "fixed") {
									g = parseInt(f.css("zIndex"), 10);
									if (!isNaN(g) && g !== 0)
										return g
								}
								f = f.parent()
							}
						}
						return 0
					},
					disableSelection : function() {
						return this.bind((b.support.selectstart
										? "selectstart"
										: "mousedown")
										+ ".ui-disableSelection", function(f) {
									f.preventDefault()
								})
					},
					enableSelection : function() {
						return this.unbind(".ui-disableSelection")
					}
				});
		b.each(["Width", "Height"], function(f, g) {
			function a(j, n, o, l) {
				b.each(c, function() {
							n -= parseFloat(b.curCSS(j, "padding" + this, true))
									|| 0;
							if (o)
								n -= parseFloat(b.curCSS(j, "border" + this
												+ "Width", true))
										|| 0;
							if (l)
								n -= parseFloat(b.curCSS(j, "margin" + this,
										true))
										|| 0
						});
				return n
			}
			var c = g === "Width" ? ["Left", "Right"] : ["Top", "Bottom"], h = g
					.toLowerCase(), i = {
				innerWidth : b.fn.innerWidth,
				innerHeight : b.fn.innerHeight,
				outerWidth : b.fn.outerWidth,
				outerHeight : b.fn.outerHeight
			};
			b.fn["inner" + g] = function(j) {
				if (j === d)
					return i["inner" + g].call(this);
				return this.each(function() {
							b(this).css(h, a(this, j) + "px")
						})
			};
			b.fn["outer" + g] = function(j, n) {
				if (typeof j !== "number")
					return i["outer" + g].call(this, j);
				return this.each(function() {
							b(this).css(h, a(this, j, true, n) + "px")
						})
			}
		});
		b.extend(b.expr[":"], {
					data : function(f, g, a) {
						return !!b.data(f, a[3])
					},
					focusable : function(f) {
						var g = f.nodeName.toLowerCase(), a = b.attr(f,
								"tabindex");
						if ("area" === g) {
							g = f.parentNode;
							a = g.name;
							if (!f.href || !a
									|| g.nodeName.toLowerCase() !== "map")
								return false;
							f = b("img[usemap=#" + a + "]")[0];
							return !!f && e(f)
						}
						return (/input|select|textarea|button|object/.test(g)
								? !f.disabled
								: "a" == g ? f.href || !isNaN(a) : !isNaN(a))
								&& e(f)
					},
					tabbable : function(f) {
						var g = b.attr(f, "tabindex");
						return (isNaN(g) || g >= 0) && b(f).is(":focusable")
					}
				});
		b(function() {
					var f = document.body, g = f.appendChild(g = document
							.createElement("div"));
					b.extend(g.style, {
								minHeight : "100px",
								height : "auto",
								padding : 0,
								borderWidth : 0
							});
					b.support.minHeight = g.offsetHeight === 100;
					b.support.selectstart = "onselectstart" in g;
					f.removeChild(g).style.display = "none"
				});
		b.extend(b.ui, {
					plugin : {
						add : function(f, g, a) {
							f = b.ui[f].prototype;
							for (var c in a) {
								f.plugins[c] = f.plugins[c] || [];
								f.plugins[c].push([g, a[c]])
							}
						},
						call : function(f, g, a) {
							if ((g = f.plugins[g]) && f.element[0].parentNode)
								for (var c = 0; c < g.length; c++)
									f.options[g[c][0]]
											&& g[c][1].apply(f.element, a)
						}
					},
					contains : function(f, g) {
						return document.compareDocumentPosition ? f
								.compareDocumentPosition(g)
								& 16 : f !== g && f.contains(g)
					},
					hasScroll : function(f, g) {
						if (b(f).css("overflow") === "hidden")
							return false;
						g = g && g === "left" ? "scrollLeft" : "scrollTop";
						var a = false;
						if (f[g] > 0)
							return true;
						f[g] = 1;
						a = f[g] > 0;
						f[g] = 0;
						return a
					},
					isOverAxis : function(f, g, a) {
						return f > g && f < g + a
					},
					isOver : function(f, g, a, c, h, i) {
						return b.ui.isOverAxis(f, a, h)
								&& b.ui.isOverAxis(g, c, i)
					}
				})
	}
})(jQuery);
(function(b, d) {
	if (b.cleanData) {
		var e = b.cleanData;
		b.cleanData = function(g) {
			for (var a = 0, c; (c = g[a]) != null; a++)
				b(c).triggerHandler("remove");
			e(g)
		}
	} else {
		var f = b.fn.remove;
		b.fn.remove = function(g, a) {
			return this.each(function() {
						if (!a)
							if (!g || b.filter(g, [this]).length)
								b("*", this).add([this]).each(function() {
											b(this).triggerHandler("remove")
										});
						return f.call(b(this), g, a)
					})
		}
	}
	b.widget = function(g, a, c) {
		var h = g.split(".")[0], i;
		g = g.split(".")[1];
		i = h + "-" + g;
		if (!c) {
			c = a;
			a = b.Widget
		}
		b.expr[":"][i] = function(j) {
			return !!b.data(j, g)
		};
		b[h] = b[h] || {};
		b[h][g] = function(j, n) {
			arguments.length && this._createWidget(j, n)
		};
		a = new a;
		a.options = b.extend(true, {}, a.options);
		b[h][g].prototype = b.extend(true, a, {
					namespace : h,
					widgetName : g,
					widgetEventPrefix : b[h][g].prototype.widgetEventPrefix
							|| g,
					widgetBaseClass : i
				}, c);
		b.widget.bridge(g, b[h][g])
	};
	b.widget.bridge = function(g, a) {
		b.fn[g] = function(c) {
			var h = typeof c === "string", i = Array.prototype.slice.call(
					arguments, 1), j = this;
			c = !h && i.length ? b.extend.apply(null, [true, c].concat(i)) : c;
			if (h && c.charAt(0) === "_")
				return j;
			h ? this.each(function() {
						var n = b.data(this, g), o = n && b.isFunction(n[c])
								? n[c].apply(n, i)
								: n;
						if (o !== n && o !== d) {
							j = o;
							return false
						}
					}) : this.each(function() {
						var n = b.data(this, g);
						n ? n.option(c || {})._init() : b.data(this, g, new a(
										c, this))
					});
			return j
		}
	};
	b.Widget = function(g, a) {
		arguments.length && this._createWidget(g, a)
	};
	b.Widget.prototype = {
		widgetName : "widget",
		widgetEventPrefix : "",
		options : {
			disabled : false
		},
		_createWidget : function(g, a) {
			b.data(a, this.widgetName, this);
			this.element = b(a);
			this.options = b.extend(true, {}, this.options, this
							._getCreateOptions(), g);
			var c = this;
			this.element.bind("remove." + this.widgetName, function() {
						c.destroy()
					});
			this._create();
			this._trigger("create");
			this._init()
		},
		_getCreateOptions : function() {
			return b.metadata
					&& b.metadata.get(this.element[0])[this.widgetName]
		},
		_create : function() {
		},
		_init : function() {
		},
		destroy : function() {
			this.element.unbind("." + this.widgetName)
					.removeData(this.widgetName);
			this.widget().unbind("." + this.widgetName)
					.removeAttr("aria-disabled")
					.removeClass(this.widgetBaseClass
							+ "-disabled ui-state-disabled")
		},
		widget : function() {
			return this.element
		},
		option : function(g, a) {
			var c = g;
			if (arguments.length === 0)
				return b.extend({}, this.options);
			if (typeof g === "string") {
				if (a === d)
					return this.options[g];
				c = {};
				c[g] = a
			}
			this._setOptions(c);
			return this
		},
		_setOptions : function(g) {
			var a = this;
			b.each(g, function(c, h) {
						a._setOption(c, h)
					});
			return this
		},
		_setOption : function(g, a) {
			this.options[g] = a;
			if (g === "disabled")
				this.widget()[a ? "addClass" : "removeClass"](this.widgetBaseClass
						+ "-disabled ui-state-disabled").attr("aria-disabled",
						a);
			return this
		},
		enable : function() {
			return this._setOption("disabled", false)
		},
		disable : function() {
			return this._setOption("disabled", true)
		},
		_trigger : function(g, a, c) {
			var h = this.options[g];
			a = b.Event(a);
			a.type = (g === this.widgetEventPrefix ? g : this.widgetEventPrefix
					+ g).toLowerCase();
			c = c || {};
			if (a.originalEvent) {
				g = b.event.props.length;
				for (var i; g;) {
					i = b.event.props[--g];
					a[i] = a.originalEvent[i]
				}
			}
			this.element.trigger(a, c);
			return !(b.isFunction(h) && h.call(this.element[0], a, c) === false || a
					.isDefaultPrevented())
		}
	}
})(jQuery);
(function(b) {
	b.widget("ui.mouse", {
		options : {
			cancel : ":input,option",
			distance : 1,
			delay : 0
		},
		_mouseInit : function() {
			var d = this;
			this.element.bind("mousedown." + this.widgetName, function(e) {
						return d._mouseDown(e)
					}).bind("click." + this.widgetName, function(e) {
				if (true === b.data(e.target, d.widgetName
								+ ".preventClickEvent")) {
					b.removeData(e.target, d.widgetName + ".preventClickEvent");
					e.stopImmediatePropagation();
					return false
				}
			});
			this.started = false
		},
		_mouseDestroy : function() {
			this.element.unbind("." + this.widgetName)
		},
		_mouseDown : function(d) {
			d.originalEvent = d.originalEvent || {};
			if (!d.originalEvent.mouseHandled) {
				this._mouseStarted && this._mouseUp(d);
				this._mouseDownEvent = d;
				var e = this, f = d.which == 1, g = typeof this.options.cancel == "string"
						? b(d.target).parents().add(d.target)
								.filter(this.options.cancel).length
						: false;
				if (!f || g || !this._mouseCapture(d))
					return true;
				this.mouseDelayMet = !this.options.delay;
				if (!this.mouseDelayMet)
					this._mouseDelayTimer = setTimeout(function() {
								e.mouseDelayMet = true
							}, this.options.delay);
				if (this._mouseDistanceMet(d) && this._mouseDelayMet(d)) {
					this._mouseStarted = this._mouseStart(d) !== false;
					if (!this._mouseStarted) {
						d.preventDefault();
						return true
					}
				}
				true === b.data(d.target, this.widgetName
								+ ".preventClickEvent")
						&& b.removeData(d.target, this.widgetName
										+ ".preventClickEvent");
				this._mouseMoveDelegate = function(a) {
					return e._mouseMove(a)
				};
				this._mouseUpDelegate = function(a) {
					return e._mouseUp(a)
				};
				b(document).bind("mousemove." + this.widgetName,
						this._mouseMoveDelegate).bind(
						"mouseup." + this.widgetName, this._mouseUpDelegate);
				d.preventDefault();
				return d.originalEvent.mouseHandled = true
			}
		},
		_mouseMove : function(d) {
			if (b.browser.msie && !(document.documentMode >= 9) && !d.button)
				return this._mouseUp(d);
			if (this._mouseStarted) {
				this._mouseDrag(d);
				return d.preventDefault()
			}
			if (this._mouseDistanceMet(d) && this._mouseDelayMet(d))
				(this._mouseStarted = this._mouseStart(this._mouseDownEvent, d) !== false)
						? this._mouseDrag(d)
						: this._mouseUp(d);
			return !this._mouseStarted
		},
		_mouseUp : function(d) {
			b(document).unbind("mousemove." + this.widgetName,
					this._mouseMoveDelegate).unbind(
					"mouseup." + this.widgetName, this._mouseUpDelegate);
			if (this._mouseStarted) {
				this._mouseStarted = false;
				d.target == this._mouseDownEvent.target
						&& b.data(d.target, this.widgetName
										+ ".preventClickEvent", true);
				this._mouseStop(d)
			}
			return false
		},
		_mouseDistanceMet : function(d) {
			return Math.max(Math.abs(this._mouseDownEvent.pageX - d.pageX),
					Math.abs(this._mouseDownEvent.pageY - d.pageY)) >= this.options.distance
		},
		_mouseDelayMet : function() {
			return this.mouseDelayMet
		},
		_mouseStart : function() {
		},
		_mouseDrag : function() {
		},
		_mouseStop : function() {
		},
		_mouseCapture : function() {
			return true
		}
	})
})(jQuery);
(function(b) {
	b.widget("ui.draggable", b.ui.mouse, {
		widgetEventPrefix : "drag",
		options : {
			addClasses : true,
			appendTo : "parent",
			axis : false,
			connectToSortable : false,
			containment : false,
			cursor : "auto",
			cursorAt : false,
			grid : false,
			handle : false,
			helper : "original",
			iframeFix : false,
			opacity : false,
			refreshPositions : false,
			revert : false,
			revertDuration : 500,
			scope : "default",
			scroll : true,
			scrollSensitivity : 20,
			scrollSpeed : 20,
			snap : false,
			snapMode : "both",
			snapTolerance : 20,
			stack : false,
			zIndex : false
		},
		_create : function() {
			if (this.options.helper == "original"
					&& !/^(?:r|a|f)/.test(this.element.css("position")))
				this.element[0].style.position = "relative";
			this.options.addClasses && this.element.addClass("ui-draggable");
			this.options.disabled
					&& this.element.addClass("ui-draggable-disabled");
			this._mouseInit()
		},
		destroy : function() {
			if (this.element.data("draggable")) {
				this.element
						.removeData("draggable")
						.unbind(".draggable")
						.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");
				this._mouseDestroy();
				return this
			}
		},
		_mouseCapture : function(d) {
			var e = this.options;
			if (this.helper || e.disabled
					|| b(d.target).is(".ui-resizable-handle"))
				return false;
			this.handle = this._getHandle(d);
			if (!this.handle)
				return false;
			return true
		},
		_mouseStart : function(d) {
			var e = this.options;
			this.helper = this._createHelper(d);
			this._cacheHelperProportions();
			if (b.ui.ddmanager)
				b.ui.ddmanager.current = this;
			this._cacheMargins();
			this.cssPosition = this.helper.css("position");
			this.scrollParent = this.helper.scrollParent();
			this.offset = this.positionAbs = this.element.offset();
			this.offset = {
				top : this.offset.top - this.margins.top,
				left : this.offset.left - this.margins.left
			};
			b.extend(this.offset, {
						click : {
							left : d.pageX - this.offset.left,
							top : d.pageY - this.offset.top
						},
						parent : this._getParentOffset(),
						relative : this._getRelativeOffset()
					});
			this.originalPosition = this.position = this._generatePosition(d);
			this.originalPageX = d.pageX;
			this.originalPageY = d.pageY;
			e.cursorAt && this._adjustOffsetFromHelper(e.cursorAt);
			e.containment && this._setContainment();
			if (this._trigger("start", d) === false) {
				this._clear();
				return false
			}
			this._cacheHelperProportions();
			b.ui.ddmanager && !e.dropBehaviour
					&& b.ui.ddmanager.prepareOffsets(this, d);
			this.helper.addClass("ui-draggable-dragging");
			this._mouseDrag(d, true);
			return true
		},
		_mouseDrag : function(d, e) {
			this.position = this._generatePosition(d);
			this.positionAbs = this._convertPositionTo("absolute");
			if (!e) {
				e = this._uiHash();
				if (this._trigger("drag", d, e) === false) {
					this._mouseUp({});
					return false
				}
				this.position = e.position
			}
			if (!this.options.axis || this.options.axis != "y")
				this.helper[0].style.left = this.position.left + "px";
			if (!this.options.axis || this.options.axis != "x")
				this.helper[0].style.top = this.position.top + "px";
			b.ui.ddmanager && b.ui.ddmanager.drag(this, d);
			return false
		},
		_mouseStop : function(d) {
			var e = false;
			if (b.ui.ddmanager && !this.options.dropBehaviour)
				e = b.ui.ddmanager.drop(this, d);
			if (this.dropped) {
				e = this.dropped;
				this.dropped = false
			}
			if ((!this.element[0] || !this.element[0].parentNode)
					&& this.options.helper == "original")
				return false;
			if (this.options.revert == "invalid" && !e
					|| this.options.revert == "valid" && e
					|| this.options.revert === true
					|| b.isFunction(this.options.revert)
					&& this.options.revert.call(this.element, e)) {
				var f = this;
				b(this.helper).animate(this.originalPosition,
						parseInt(this.options.revertDuration, 10), function() {
							f._trigger("stop", d) !== false && f._clear()
						})
			} else
				this._trigger("stop", d) !== false && this._clear();
			return false
		},
		cancel : function() {
			this.helper.is(".ui-draggable-dragging") ? this._mouseUp({}) : this
					._clear();
			return this
		},
		_getHandle : function(d) {
			var e = !this.options.handle
					|| !b(this.options.handle, this.element).length
					? true
					: false;
			b(this.options.handle, this.element).find("*").andSelf().each(
					function() {
						if (this == d.target)
							e = true
					});
			return e
		},
		_createHelper : function(d) {
			var e = this.options;
			d = b.isFunction(e.helper)
					? b(e.helper.apply(this.element[0], [d]))
					: e.helper == "clone" ? this.element.clone() : this.element;
			d.parents("body").length
					|| d.appendTo(e.appendTo == "parent"
							? this.element[0].parentNode
							: e.appendTo);
			d[0] != this.element[0]
					&& !/(fixed|absolute)/.test(d.css("position"))
					&& d.css("position", "absolute");
			return d
		},
		_adjustOffsetFromHelper : function(d) {
			if (typeof d == "string")
				d = d.split(" ");
			if (b.isArray(d))
				d = {
					left : +d[0],
					top : +d[1] || 0
				};
			if ("left" in d)
				this.offset.click.left = d.left + this.margins.left;
			if ("right" in d)
				this.offset.click.left = this.helperProportions.width - d.right
						+ this.margins.left;
			if ("top" in d)
				this.offset.click.top = d.top + this.margins.top;
			if ("bottom" in d)
				this.offset.click.top = this.helperProportions.height
						- d.bottom + this.margins.top
		},
		_getParentOffset : function() {
			this.offsetParent = this.helper.offsetParent();
			var d = this.offsetParent.offset();
			if (this.cssPosition == "absolute"
					&& this.scrollParent[0] != document
					&& b.ui
							.contains(this.scrollParent[0],
									this.offsetParent[0])) {
				d.left += this.scrollParent.scrollLeft();
				d.top += this.scrollParent.scrollTop()
			}
			if (this.offsetParent[0] == document.body
					|| this.offsetParent[0].tagName
					&& this.offsetParent[0].tagName.toLowerCase() == "html"
					&& b.browser.msie)
				d = {
					top : 0,
					left : 0
				};
			return {
				top : d.top
						+ (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
				left : d.left
						+ (parseInt(this.offsetParent.css("borderLeftWidth"),
								10) || 0)
			}
		},
		_getRelativeOffset : function() {
			if (this.cssPosition == "relative") {
				var d = this.element.position();
				return {
					top : d.top - (parseInt(this.helper.css("top"), 10) || 0)
							+ this.scrollParent.scrollTop(),
					left : d.left
							- (parseInt(this.helper.css("left"), 10) || 0)
							+ this.scrollParent.scrollLeft()
				}
			} else
				return {
					top : 0,
					left : 0
				}
		},
		_cacheMargins : function() {
			this.margins = {
				left : parseInt(this.element.css("marginLeft"), 10) || 0,
				top : parseInt(this.element.css("marginTop"), 10) || 0,
				right : parseInt(this.element.css("marginRight"), 10) || 0,
				bottom : parseInt(this.element.css("marginBottom"), 10) || 0
			}
		},
		_cacheHelperProportions : function() {
			this.helperProportions = {
				width : this.helper.outerWidth(),
				height : this.helper.outerHeight()
			}
		},
		_setContainment : function() {
			var d = this.options;
			if (d.containment == "parent")
				d.containment = this.helper[0].parentNode;
			if (d.containment == "document" || d.containment == "window")
				this.containment = [
						(d.containment == "document" ? 0 : b(window)
								.scrollLeft())
								- this.offset.relative.left
								- this.offset.parent.left,
						(d.containment == "document" ? 0 : b(window)
								.scrollTop())
								- this.offset.relative.top
								- this.offset.parent.top,
						(d.containment == "document" ? 0 : b(window)
								.scrollLeft())
								+ b(d.containment == "document"
										? document
										: window).width()
								- this.helperProportions.width
								- this.margins.left,
						(d.containment == "document" ? 0 : b(window)
								.scrollTop())
								+ (b(d.containment == "document"
										? document
										: window).height() || document.body.parentNode.scrollHeight)
								- this.helperProportions.height
								- this.margins.top];
			if (!/^(document|window|parent)$/.test(d.containment)
					&& d.containment.constructor != Array) {
				var e = b(d.containment)[0];
				if (e) {
					d = b(d.containment).offset();
					var f = b(e).css("overflow") != "hidden";
					this.containment = [
							d.left
									+ (parseInt(b(e).css("borderLeftWidth"), 10) || 0)
									+ (parseInt(b(e).css("paddingLeft"), 10) || 0),
							d.top
									+ (parseInt(b(e).css("borderTopWidth"), 10) || 0)
									+ (parseInt(b(e).css("paddingTop"), 10) || 0),
							d.left
									+ (f ? Math.max(e.scrollWidth,
											e.offsetWidth) : e.offsetWidth)
									- (parseInt(b(e).css("borderLeftWidth"), 10) || 0)
									- (parseInt(b(e).css("paddingRight"), 10) || 0)
									- this.helperProportions.width
									- this.margins.left - this.margins.right,
							d.top
									+ (f ? Math.max(e.scrollHeight,
											e.offsetHeight) : e.offsetHeight)
									- (parseInt(b(e).css("borderTopWidth"), 10) || 0)
									- (parseInt(b(e).css("paddingBottom"), 10) || 0)
									- this.helperProportions.height
									- this.margins.top - this.margins.bottom]
				}
			} else if (d.containment.constructor == Array)
				this.containment = d.containment
		},
		_convertPositionTo : function(d, e) {
			if (!e)
				e = this.position;
			d = d == "absolute" ? 1 : -1;
			var f = this.cssPosition == "absolute"
					&& !(this.scrollParent[0] != document && b.ui.contains(
							this.scrollParent[0], this.offsetParent[0]))
					? this.offsetParent
					: this.scrollParent, g = /(html|body)/i.test(f[0].tagName);
			return {
				top : e.top
						+ this.offset.relative.top
						* d
						+ this.offset.parent.top
						* d
						- (b.browser.safari && b.browser.version < 526
								&& this.cssPosition == "fixed"
								? 0
								: (this.cssPosition == "fixed"
										? -this.scrollParent.scrollTop()
										: g ? 0 : f.scrollTop())
										* d),
				left : e.left
						+ this.offset.relative.left
						* d
						+ this.offset.parent.left
						* d
						- (b.browser.safari && b.browser.version < 526
								&& this.cssPosition == "fixed"
								? 0
								: (this.cssPosition == "fixed"
										? -this.scrollParent.scrollLeft()
										: g ? 0 : f.scrollLeft())
										* d)
			}
		},
		_generatePosition : function(d) {
			var e = this.options, f = this.cssPosition == "absolute"
					&& !(this.scrollParent[0] != document && b.ui.contains(
							this.scrollParent[0], this.offsetParent[0]))
					? this.offsetParent
					: this.scrollParent, g = /(html|body)/i.test(f[0].tagName), a = d.pageX, c = d.pageY;
			if (this.originalPosition) {
				if (this.containment) {
					if (d.pageX - this.offset.click.left < this.containment[0])
						a = this.containment[0] + this.offset.click.left;
					if (d.pageY - this.offset.click.top < this.containment[1])
						c = this.containment[1] + this.offset.click.top;
					if (d.pageX - this.offset.click.left > this.containment[2])
						a = this.containment[2] + this.offset.click.left;
					if (d.pageY - this.offset.click.top > this.containment[3])
						c = this.containment[3] + this.offset.click.top
				}
				if (e.grid) {
					c = this.originalPageY
							+ Math.round((c - this.originalPageY) / e.grid[1])
							* e.grid[1];
					c = this.containment
							? !(c - this.offset.click.top < this.containment[1] || c
									- this.offset.click.top > this.containment[3])
									? c
									: !(c - this.offset.click.top < this.containment[1])
											? c - e.grid[1]
											: c + e.grid[1]
							: c;
					a = this.originalPageX
							+ Math.round((a - this.originalPageX) / e.grid[0])
							* e.grid[0];
					a = this.containment
							? !(a - this.offset.click.left < this.containment[0] || a
									- this.offset.click.left > this.containment[2])
									? a
									: !(a - this.offset.click.left < this.containment[0])
											? a - e.grid[0]
											: a + e.grid[0]
							: a
				}
			}
			return {
				top : c
						- this.offset.click.top
						- this.offset.relative.top
						- this.offset.parent.top
						+ (b.browser.safari && b.browser.version < 526
								&& this.cssPosition == "fixed"
								? 0
								: this.cssPosition == "fixed"
										? -this.scrollParent.scrollTop()
										: g ? 0 : f.scrollTop()),
				left : a
						- this.offset.click.left
						- this.offset.relative.left
						- this.offset.parent.left
						+ (b.browser.safari && b.browser.version < 526
								&& this.cssPosition == "fixed"
								? 0
								: this.cssPosition == "fixed"
										? -this.scrollParent.scrollLeft()
										: g ? 0 : f.scrollLeft())
			}
		},
		_clear : function() {
			this.helper.removeClass("ui-draggable-dragging");
			this.helper[0] != this.element[0] && !this.cancelHelperRemoval
					&& this.helper.remove();
			this.helper = null;
			this.cancelHelperRemoval = false
		},
		_trigger : function(d, e, f) {
			f = f || this._uiHash();
			b.ui.plugin.call(this, d, [e, f]);
			if (d == "drag")
				this.positionAbs = this._convertPositionTo("absolute");
			return b.Widget.prototype._trigger.call(this, d, e, f)
		},
		plugins : {},
		_uiHash : function() {
			return {
				helper : this.helper,
				position : this.position,
				originalPosition : this.originalPosition,
				offset : this.positionAbs
			}
		}
	});
	b.extend(b.ui.draggable, {
				version : "1.8.12"
			});
	b.ui.plugin.add("draggable", "connectToSortable", {
		start : function(d, e) {
			var f = b(this).data("draggable"), g = f.options, a = b.extend({},
					e, {
						item : f.element
					});
			f.sortables = [];
			b(g.connectToSortable).each(function() {
						var c = b.data(this, "sortable");
						if (c && !c.options.disabled) {
							f.sortables.push({
										instance : c,
										shouldRevert : c.options.revert
									});
							c.refreshPositions();
							c._trigger("activate", d, a)
						}
					})
		},
		stop : function(d, e) {
			var f = b(this).data("draggable"), g = b.extend({}, e, {
						item : f.element
					});
			b.each(f.sortables, function() {
				if (this.instance.isOver) {
					this.instance.isOver = 0;
					f.cancelHelperRemoval = true;
					this.instance.cancelHelperRemoval = false;
					if (this.shouldRevert)
						this.instance.options.revert = true;
					this.instance._mouseStop(d);
					this.instance.options.helper = this.instance.options._helper;
					f.options.helper == "original"
							&& this.instance.currentItem.css({
										top : "auto",
										left : "auto"
									})
				} else {
					this.instance.cancelHelperRemoval = false;
					this.instance._trigger("deactivate", d, g)
				}
			})
		},
		drag : function(d, e) {
			var f = b(this).data("draggable"), g = this;
			b.each(f.sortables, function() {
				this.instance.positionAbs = f.positionAbs;
				this.instance.helperProportions = f.helperProportions;
				this.instance.offset.click = f.offset.click;
				if (this.instance._intersectsWith(this.instance.containerCache)) {
					if (!this.instance.isOver) {
						this.instance.isOver = 1;
						this.instance.currentItem = b(g).clone()
								.appendTo(this.instance.element).data(
										"sortable-item", true);
						this.instance.options._helper = this.instance.options.helper;
						this.instance.options.helper = function() {
							return e.helper[0]
						};
						d.target = this.instance.currentItem[0];
						this.instance._mouseCapture(d, true);
						this.instance._mouseStart(d, true, true);
						this.instance.offset.click.top = f.offset.click.top;
						this.instance.offset.click.left = f.offset.click.left;
						this.instance.offset.parent.left -= f.offset.parent.left
								- this.instance.offset.parent.left;
						this.instance.offset.parent.top -= f.offset.parent.top
								- this.instance.offset.parent.top;
						f._trigger("toSortable", d);
						f.dropped = this.instance.element;
						f.currentItem = f.element;
						this.instance.fromOutside = f
					}
					this.instance.currentItem && this.instance._mouseDrag(d)
				} else if (this.instance.isOver) {
					this.instance.isOver = 0;
					this.instance.cancelHelperRemoval = true;
					this.instance.options.revert = false;
					this.instance._trigger("out", d, this.instance
									._uiHash(this.instance));
					this.instance._mouseStop(d, true);
					this.instance.options.helper = this.instance.options._helper;
					this.instance.currentItem.remove();
					this.instance.placeholder
							&& this.instance.placeholder.remove();
					f._trigger("fromSortable", d);
					f.dropped = false
				}
			})
		}
	});
	b.ui.plugin.add("draggable", "cursor", {
				start : function() {
					var d = b("body"), e = b(this).data("draggable").options;
					if (d.css("cursor"))
						e._cursor = d.css("cursor");
					d.css("cursor", e.cursor)
				},
				stop : function() {
					var d = b(this).data("draggable").options;
					d._cursor && b("body").css("cursor", d._cursor)
				}
			});
	b.ui.plugin.add("draggable", "iframeFix", {
		start : function() {
			var d = b(this).data("draggable").options;
			b(d.iframeFix === true ? "iframe" : d.iframeFix).each(function() {
				b('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
						.css({
									width : this.offsetWidth + "px",
									height : this.offsetHeight + "px",
									position : "absolute",
									opacity : "0.001",
									zIndex : 1E3
								}).css(b(this).offset()).appendTo("body")
			})
		},
		stop : function() {
			b("div.ui-draggable-iframeFix").each(function() {
						this.parentNode.removeChild(this)
					})
		}
	});
	b.ui.plugin.add("draggable", "opacity", {
				start : function(d, e) {
					d = b(e.helper);
					e = b(this).data("draggable").options;
					if (d.css("opacity"))
						e._opacity = d.css("opacity");
					d.css("opacity", e.opacity)
				},
				stop : function(d, e) {
					d = b(this).data("draggable").options;
					d._opacity && b(e.helper).css("opacity", d._opacity)
				}
			});
	b.ui.plugin.add("draggable", "scroll", {
		start : function() {
			var d = b(this).data("draggable");
			if (d.scrollParent[0] != document
					&& d.scrollParent[0].tagName != "HTML")
				d.overflowOffset = d.scrollParent.offset()
		},
		drag : function(d) {
			var e = b(this).data("draggable"), f = e.options, g = false;
			if (e.scrollParent[0] != document
					&& e.scrollParent[0].tagName != "HTML") {
				if (!f.axis || f.axis != "x")
					if (e.overflowOffset.top + e.scrollParent[0].offsetHeight
							- d.pageY < f.scrollSensitivity)
						e.scrollParent[0].scrollTop = g = e.scrollParent[0].scrollTop
								+ f.scrollSpeed;
					else if (d.pageY - e.overflowOffset.top < f.scrollSensitivity)
						e.scrollParent[0].scrollTop = g = e.scrollParent[0].scrollTop
								- f.scrollSpeed;
				if (!f.axis || f.axis != "y")
					if (e.overflowOffset.left + e.scrollParent[0].offsetWidth
							- d.pageX < f.scrollSensitivity)
						e.scrollParent[0].scrollLeft = g = e.scrollParent[0].scrollLeft
								+ f.scrollSpeed;
					else if (d.pageX - e.overflowOffset.left < f.scrollSensitivity)
						e.scrollParent[0].scrollLeft = g = e.scrollParent[0].scrollLeft
								- f.scrollSpeed
			} else {
				if (!f.axis || f.axis != "x")
					if (d.pageY - b(document).scrollTop() < f.scrollSensitivity)
						g = b(document).scrollTop(b(document).scrollTop()
								- f.scrollSpeed);
					else if (b(window).height()
							- (d.pageY - b(document).scrollTop()) < f.scrollSensitivity)
						g = b(document).scrollTop(b(document).scrollTop()
								+ f.scrollSpeed);
				if (!f.axis || f.axis != "y")
					if (d.pageX - b(document).scrollLeft() < f.scrollSensitivity)
						g = b(document).scrollLeft(b(document).scrollLeft()
								- f.scrollSpeed);
					else if (b(window).width()
							- (d.pageX - b(document).scrollLeft()) < f.scrollSensitivity)
						g = b(document).scrollLeft(b(document).scrollLeft()
								+ f.scrollSpeed)
			}
			g !== false && b.ui.ddmanager && !f.dropBehaviour
					&& b.ui.ddmanager.prepareOffsets(e, d)
		}
	});
	b.ui.plugin.add("draggable", "snap", {
		start : function() {
			var d = b(this).data("draggable"), e = d.options;
			d.snapElements = [];
			b(e.snap.constructor != String
					? e.snap.items || ":data(draggable)"
					: e.snap).each(function() {
						var f = b(this), g = f.offset();
						this != d.element[0] && d.snapElements.push({
									item : this,
									width : f.outerWidth(),
									height : f.outerHeight(),
									top : g.top,
									left : g.left
								})
					})
		},
		drag : function(d, e) {
			for (var f = b(this).data("draggable"), g = f.options, a = g.snapTolerance, c = e.offset.left, h = c
					+ f.helperProportions.width, i = e.offset.top, j = i
					+ f.helperProportions.height, n = f.snapElements.length - 1; n >= 0; n--) {
				var o = f.snapElements[n].left, l = o + f.snapElements[n].width, k = f.snapElements[n].top, m = k
						+ f.snapElements[n].height;
				if (o - a < c && c < l + a && k - a < i && i < m + a
						|| o - a < c && c < l + a && k - a < j && j < m + a
						|| o - a < h && h < l + a && k - a < i && i < m + a
						|| o - a < h && h < l + a && k - a < j && j < m + a) {
					if (g.snapMode != "inner") {
						var p = Math.abs(k - j) <= a, q = Math.abs(m - i) <= a, s = Math
								.abs(o - h) <= a, r = Math.abs(l - c) <= a;
						if (p)
							e.position.top = f._convertPositionTo("relative", {
										top : k - f.helperProportions.height,
										left : 0
									}).top - f.margins.top;
						if (q)
							e.position.top = f._convertPositionTo("relative", {
										top : m,
										left : 0
									}).top - f.margins.top;
						if (s)
							e.position.left = f._convertPositionTo("relative",
									{
										top : 0,
										left : o - f.helperProportions.width
									}).left
									- f.margins.left;
						if (r)
							e.position.left = f._convertPositionTo("relative",
									{
										top : 0,
										left : l
									}).left
									- f.margins.left
					}
					var u = p || q || s || r;
					if (g.snapMode != "outer") {
						p = Math.abs(k - i) <= a;
						q = Math.abs(m - j) <= a;
						s = Math.abs(o - c) <= a;
						r = Math.abs(l - h) <= a;
						if (p)
							e.position.top = f._convertPositionTo("relative", {
										top : k,
										left : 0
									}).top - f.margins.top;
						if (q)
							e.position.top = f._convertPositionTo("relative", {
										top : m - f.helperProportions.height,
										left : 0
									}).top - f.margins.top;
						if (s)
							e.position.left = f._convertPositionTo("relative",
									{
										top : 0,
										left : o
									}).left
									- f.margins.left;
						if (r)
							e.position.left = f._convertPositionTo("relative",
									{
										top : 0,
										left : l - f.helperProportions.width
									}).left
									- f.margins.left
					}
					if (!f.snapElements[n].snapping && (p || q || s || r || u))
						f.options.snap.snap
								&& f.options.snap.snap.call(f.element, d, b
										.extend(f._uiHash(), {
													snapItem : f.snapElements[n].item
												}));
					f.snapElements[n].snapping = p || q || s || r || u
				} else {
					f.snapElements[n].snapping
							&& f.options.snap.release
							&& f.options.snap.release.call(f.element, d, b
									.extend(f._uiHash(), {
												snapItem : f.snapElements[n].item
											}));
					f.snapElements[n].snapping = false
				}
			}
		}
	});
	b.ui.plugin.add("draggable", "stack", {
				start : function() {
					var d = b(this).data("draggable").options;
					d = b.makeArray(b(d.stack)).sort(function(f, g) {
						return (parseInt(b(f).css("zIndex"), 10) || 0)
								- (parseInt(b(g).css("zIndex"), 10) || 0)
					});
					if (d.length) {
						var e = parseInt(d[0].style.zIndex) || 0;
						b(d).each(function(f) {
									this.style.zIndex = e + f
								});
						this[0].style.zIndex = e + d.length
					}
				}
			});
	b.ui.plugin.add("draggable", "zIndex", {
				start : function(d, e) {
					d = b(e.helper);
					e = b(this).data("draggable").options;
					if (d.css("zIndex"))
						e._zIndex = d.css("zIndex");
					d.css("zIndex", e.zIndex)
				},
				stop : function(d, e) {
					d = b(this).data("draggable").options;
					d._zIndex && b(e.helper).css("zIndex", d._zIndex)
				}
			})
})(jQuery);
(function(b) {
	b.widget("ui.droppable", {
		widgetEventPrefix : "drop",
		options : {
			accept : "*",
			activeClass : false,
			addClasses : true,
			greedy : false,
			hoverClass : false,
			scope : "default",
			tolerance : "intersect"
		},
		_create : function() {
			var d = this.options, e = d.accept;
			this.isover = 0;
			this.isout = 1;
			this.accept = b.isFunction(e) ? e : function(f) {
				return f.is(e)
			};
			this.proportions = {
				width : this.element[0].offsetWidth,
				height : this.element[0].offsetHeight
			};
			b.ui.ddmanager.droppables[d.scope] = b.ui.ddmanager.droppables[d.scope]
					|| [];
			b.ui.ddmanager.droppables[d.scope].push(this);
			d.addClasses && this.element.addClass("ui-droppable")
		},
		destroy : function() {
			for (var d = b.ui.ddmanager.droppables[this.options.scope], e = 0; e < d.length; e++)
				d[e] == this && d.splice(e, 1);
			this.element.removeClass("ui-droppable ui-droppable-disabled")
					.removeData("droppable").unbind(".droppable");
			return this
		},
		_setOption : function(d, e) {
			if (d == "accept")
				this.accept = b.isFunction(e) ? e : function(f) {
					return f.is(e)
				};
			b.Widget.prototype._setOption.apply(this, arguments)
		},
		_activate : function(d) {
			var e = b.ui.ddmanager.current;
			this.options.activeClass
					&& this.element.addClass(this.options.activeClass);
			e && this._trigger("activate", d, this.ui(e))
		},
		_deactivate : function(d) {
			var e = b.ui.ddmanager.current;
			this.options.activeClass
					&& this.element.removeClass(this.options.activeClass);
			e && this._trigger("deactivate", d, this.ui(e))
		},
		_over : function(d) {
			var e = b.ui.ddmanager.current;
			if (!(!e || (e.currentItem || e.element)[0] == this.element[0]))
				if (this.accept.call(this.element[0], e.currentItem
								|| e.element)) {
					this.options.hoverClass
							&& this.element.addClass(this.options.hoverClass);
					this._trigger("over", d, this.ui(e))
				}
		},
		_out : function(d) {
			var e = b.ui.ddmanager.current;
			if (!(!e || (e.currentItem || e.element)[0] == this.element[0]))
				if (this.accept.call(this.element[0], e.currentItem
								|| e.element)) {
					this.options.hoverClass
							&& this.element
									.removeClass(this.options.hoverClass);
					this._trigger("out", d, this.ui(e))
				}
		},
		_drop : function(d, e) {
			var f = e || b.ui.ddmanager.current;
			if (!f || (f.currentItem || f.element)[0] == this.element[0])
				return false;
			var g = false;
			this.element.find(":data(droppable)").not(".ui-draggable-dragging")
					.each(function() {
						var a = b.data(this, "droppable");
						if (a.options.greedy
								&& !a.options.disabled
								&& a.options.scope == f.options.scope
								&& a.accept.call(a.element[0], f.currentItem
												|| f.element)
								&& b.ui.intersect(f, b.extend(a, {
													offset : a.element.offset()
												}), a.options.tolerance)) {
							g = true;
							return false
						}
					});
			if (g)
				return false;
			if (this.accept.call(this.element[0], f.currentItem || f.element)) {
				this.options.activeClass
						&& this.element.removeClass(this.options.activeClass);
				this.options.hoverClass
						&& this.element.removeClass(this.options.hoverClass);
				this._trigger("drop", d, this.ui(f));
				return this.element
			}
			return false
		},
		ui : function(d) {
			return {
				draggable : d.currentItem || d.element,
				helper : d.helper,
				position : d.position,
				offset : d.positionAbs
			}
		}
	});
	b.extend(b.ui.droppable, {
				version : "1.8.12"
			});
	b.ui.intersect = function(d, e, f) {
		if (!e.offset)
			return false;
		var g = (d.positionAbs || d.position.absolute).left, a = g
				+ d.helperProportions.width, c = (d.positionAbs || d.position.absolute).top, h = c
				+ d.helperProportions.height, i = e.offset.left, j = i
				+ e.proportions.width, n = e.offset.top, o = n
				+ e.proportions.height;
		switch (f) {
			case "fit" :
				return i <= g && a <= j && n <= c && h <= o;
			case "intersect" :
				return i < g + d.helperProportions.width / 2
						&& a - d.helperProportions.width / 2 < j
						&& n < c + d.helperProportions.height / 2
						&& h - d.helperProportions.height / 2 < o;
			case "pointer" :
				return b.ui.isOver((d.positionAbs || d.position.absolute).top
								+ (d.clickOffset || d.offset.click).top,
						(d.positionAbs || d.position.absolute).left
								+ (d.clickOffset || d.offset.click).left, n, i,
						e.proportions.height, e.proportions.width);
			case "touch" :
				return (c >= n && c <= o || h >= n && h <= o || c < n && h > o)
						&& (g >= i && g <= j || a >= i && a <= j || g < i
								&& a > j);
			default :
				return false
		}
	};
	b.ui.ddmanager = {
		current : null,
		droppables : {
			"default" : []
		},
		prepareOffsets : function(d, e) {
			var f = b.ui.ddmanager.droppables[d.options.scope] || [], g = e
					? e.type
					: null, a = (d.currentItem || d.element)
					.find(":data(droppable)").andSelf(), c = 0;
			a : for (; c < f.length; c++)
				if (!(f[c].options.disabled || d
						&& !f[c].accept.call(f[c].element[0], d.currentItem
										|| d.element))) {
					for (var h = 0; h < a.length; h++)
						if (a[h] == f[c].element[0]) {
							f[c].proportions.height = 0;
							continue a
						}
					f[c].visible = f[c].element.css("display") != "none";
					if (f[c].visible) {
						g == "mousedown" && f[c]._activate.call(f[c], e);
						f[c].offset = f[c].element.offset();
						f[c].proportions = {
							width : f[c].element[0].offsetWidth,
							height : f[c].element[0].offsetHeight
						}
					}
				}
		},
		drop : function(d, e) {
			var f = false;
			b.each(b.ui.ddmanager.droppables[d.options.scope] || [],
					function() {
						if (this.options) {
							if (!this.options.disabled
									&& this.visible
									&& b.ui.intersect(d, this,
											this.options.tolerance))
								f = f || this._drop.call(this, e);
							if (!this.options.disabled
									&& this.visible
									&& this.accept.call(this.element[0],
											d.currentItem || d.element)) {
								this.isout = 1;
								this.isover = 0;
								this._deactivate.call(this, e)
							}
						}
					});
			return f
		},
		drag : function(d, e) {
			d.options.refreshPositions && b.ui.ddmanager.prepareOffsets(d, e);
			b.each(b.ui.ddmanager.droppables[d.options.scope] || [],
					function() {
						if (!(this.options.disabled || this.greedyChild || !this.visible)) {
							var f = b.ui.intersect(d, this,
									this.options.tolerance);
							if (f = !f && this.isover == 1 ? "isout" : f
									&& this.isover == 0 ? "isover" : null) {
								var g;
								if (this.options.greedy) {
									var a = this.element
											.parents(":data(droppable):eq(0)");
									if (a.length) {
										g = b.data(a[0], "droppable");
										g.greedyChild = f == "isover" ? 1 : 0
									}
								}
								if (g && f == "isover") {
									g.isover = 0;
									g.isout = 1;
									g._out.call(g, e)
								}
								this[f] = 1;
								this[f == "isout" ? "isover" : "isout"] = 0;
								this[f == "isover" ? "_over" : "_out"].call(
										this, e);
								if (g && f == "isout") {
									g.isout = 0;
									g.isover = 1;
									g._over.call(g, e)
								}
							}
						}
					})
		}
	}
})(jQuery);
(function(b) {
	b.widget("ui.resizable", b.ui.mouse, {
		widgetEventPrefix : "resize",
		options : {
			alsoResize : false,
			animate : false,
			animateDuration : "slow",
			animateEasing : "swing",
			aspectRatio : false,
			autoHide : false,
			containment : false,
			ghost : false,
			grid : false,
			handles : "e,s,se",
			helper : false,
			maxHeight : null,
			maxWidth : null,
			minHeight : 10,
			minWidth : 10,
			zIndex : 1E3
		},
		_create : function() {
			var f = this, g = this.options;
			this.element.addClass("ui-resizable");
			b.extend(this, {
						_aspectRatio : !!g.aspectRatio,
						aspectRatio : g.aspectRatio,
						originalElement : this.element,
						_proportionallyResizeElements : [],
						_helper : g.helper || g.ghost || g.animate ? g.helper
								|| "ui-resizable-helper" : null
					});
			if (this.element[0].nodeName
					.match(/canvas|textarea|input|select|button|img/i)) {
				/relative/.test(this.element.css("position"))
						&& b.browser.opera && this.element.css({
									position : "relative",
									top : "auto",
									left : "auto"
								});
				this.element
						.wrap(b('<div class="ui-wrapper" style="overflow: hidden;"></div>')
								.css({
											position : this.element
													.css("position"),
											width : this.element.outerWidth(),
											height : this.element.outerHeight(),
											top : this.element.css("top"),
											left : this.element.css("left")
										}));
				this.element = this.element.parent().data("resizable",
						this.element.data("resizable"));
				this.elementIsWrapper = true;
				this.element.css({
							marginLeft : this.originalElement.css("marginLeft"),
							marginTop : this.originalElement.css("marginTop"),
							marginRight : this.originalElement
									.css("marginRight"),
							marginBottom : this.originalElement
									.css("marginBottom")
						});
				this.originalElement.css({
							marginLeft : 0,
							marginTop : 0,
							marginRight : 0,
							marginBottom : 0
						});
				this.originalResizeStyle = this.originalElement.css("resize");
				this.originalElement.css("resize", "none");
				this._proportionallyResizeElements.push(this.originalElement
						.css({
									position : "static",
									zoom : 1,
									display : "block"
								}));
				this.originalElement.css({
							margin : this.originalElement.css("margin")
						});
				this._proportionallyResize()
			}
			this.handles = g.handles
					|| (!b(".ui-resizable-handle", this.element).length
							? "e,s,se"
							: {
								n : ".ui-resizable-n",
								e : ".ui-resizable-e",
								s : ".ui-resizable-s",
								w : ".ui-resizable-w",
								se : ".ui-resizable-se",
								sw : ".ui-resizable-sw",
								ne : ".ui-resizable-ne",
								nw : ".ui-resizable-nw"
							});
			if (this.handles.constructor == String) {
				if (this.handles == "all")
					this.handles = "n,e,s,w,se,sw,ne,nw";
				var a = this.handles.split(",");
				this.handles = {};
				for (var c = 0; c < a.length; c++) {
					var h = b.trim(a[c]), i = b('<div class="ui-resizable-handle '
							+ ("ui-resizable-" + h) + '"></div>');
					/sw|se|ne|nw/.test(h) && i.css({
								zIndex : ++g.zIndex
							});
					"se" == h
							&& i
									.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
					this.handles[h] = ".ui-resizable-" + h;
					this.element.append(i)
				}
			}
			this._renderAxis = function(j) {
				j = j || this.element;
				for (var n in this.handles) {
					if (this.handles[n].constructor == String)
						this.handles[n] = b(this.handles[n], this.element)
								.show();
					if (this.elementIsWrapper
							&& this.originalElement[0].nodeName
									.match(/textarea|input|select|button/i)) {
						var o = b(this.handles[n], this.element), l = 0;
						l = /sw|ne|nw|se|n|s/.test(n) ? o.outerHeight() : o
								.outerWidth();
						o = [
								"padding",
								/ne|nw|n/.test(n) ? "Top" : /se|sw|s/.test(n)
										? "Bottom"
										: /^e$/.test(n) ? "Right" : "Left"]
								.join("");
						j.css(o, l);
						this._proportionallyResize()
					}
					b(this.handles[n])
				}
			};
			this._renderAxis(this.element);
			this._handles = b(".ui-resizable-handle", this.element)
					.disableSelection();
			this._handles.mouseover(function() {
						if (!f.resizing) {
							if (this.className)
								var j = this.className
										.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
							f.axis = j && j[1] ? j[1] : "se"
						}
					});
			if (g.autoHide) {
				this._handles.hide();
				b(this.element).addClass("ui-resizable-autohide").hover(
						function() {
							b(this).removeClass("ui-resizable-autohide");
							f._handles.show()
						}, function() {
							if (!f.resizing) {
								b(this).addClass("ui-resizable-autohide");
								f._handles.hide()
							}
						})
			}
			this._mouseInit()
		},
		destroy : function() {
			this._mouseDestroy();
			var f = function(a) {
				b(a)
						.removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
						.removeData("resizable").unbind(".resizable")
						.find(".ui-resizable-handle").remove()
			};
			if (this.elementIsWrapper) {
				f(this.element);
				var g = this.element;
				g.after(this.originalElement.css({
							position : g.css("position"),
							width : g.outerWidth(),
							height : g.outerHeight(),
							top : g.css("top"),
							left : g.css("left")
						})).remove()
			}
			this.originalElement.css("resize", this.originalResizeStyle);
			f(this.originalElement);
			return this
		},
		_mouseCapture : function(f) {
			var g = false;
			for (var a in this.handles)
				if (b(this.handles[a])[0] == f.target)
					g = true;
			return !this.options.disabled && g
		},
		_mouseStart : function(f) {
			var g = this.options, a = this.element.position(), c = this.element;
			this.resizing = true;
			this.documentScroll = {
				top : b(document).scrollTop(),
				left : b(document).scrollLeft()
			};
			if (c.is(".ui-draggable") || /absolute/.test(c.css("position")))
				c.css({
							position : "absolute",
							top : a.top,
							left : a.left
						});
			b.browser.opera && /relative/.test(c.css("position")) && c.css({
						position : "relative",
						top : "auto",
						left : "auto"
					});
			this._renderProxy();
			a = d(this.helper.css("left"));
			var h = d(this.helper.css("top"));
			if (g.containment) {
				a += b(g.containment).scrollLeft() || 0;
				h += b(g.containment).scrollTop() || 0
			}
			this.offset = this.helper.offset();
			this.position = {
				left : a,
				top : h
			};
			this.size = this._helper ? {
				width : c.outerWidth(),
				height : c.outerHeight()
			} : {
				width : c.width(),
				height : c.height()
			};
			this.originalSize = this._helper ? {
				width : c.outerWidth(),
				height : c.outerHeight()
			} : {
				width : c.width(),
				height : c.height()
			};
			this.originalPosition = {
				left : a,
				top : h
			};
			this.sizeDiff = {
				width : c.outerWidth() - c.width(),
				height : c.outerHeight() - c.height()
			};
			this.originalMousePosition = {
				left : f.pageX,
				top : f.pageY
			};
			this.aspectRatio = typeof g.aspectRatio == "number"
					? g.aspectRatio
					: this.originalSize.width / this.originalSize.height || 1;
			g = b(".ui-resizable-" + this.axis).css("cursor");
			b("body").css("cursor", g == "auto" ? this.axis + "-resize" : g);
			c.addClass("ui-resizable-resizing");
			this._propagate("start", f);
			return true
		},
		_mouseDrag : function(f) {
			var g = this.helper, a = this.originalMousePosition, c = this._change[this.axis];
			if (!c)
				return false;
			a = c.apply(this, [f, f.pageX - a.left || 0, f.pageY - a.top || 0]);
			if (this._aspectRatio || f.shiftKey)
				a = this._updateRatio(a, f);
			a = this._respectSize(a, f);
			this._propagate("resize", f);
			g.css({
						top : this.position.top + "px",
						left : this.position.left + "px",
						width : this.size.width + "px",
						height : this.size.height + "px"
					});
			!this._helper && this._proportionallyResizeElements.length
					&& this._proportionallyResize();
			this._updateCache(a);
			this._trigger("resize", f, this.ui());
			return false
		},
		_mouseStop : function(f) {
			this.resizing = false;
			var g = this.options, a = this;
			if (this._helper) {
				var c = this._proportionallyResizeElements, h = c.length
						&& /textarea/i.test(c[0].nodeName);
				c = h && b.ui.hasScroll(c[0], "left") ? 0 : a.sizeDiff.height;
				h = h ? 0 : a.sizeDiff.width;
				h = {
					width : a.helper.width() - h,
					height : a.helper.height() - c
				};
				c = parseInt(a.element.css("left"), 10)
						+ (a.position.left - a.originalPosition.left) || null;
				var i = parseInt(a.element.css("top"), 10)
						+ (a.position.top - a.originalPosition.top) || null;
				g.animate || this.element.css(b.extend(h, {
							top : i,
							left : c
						}));
				a.helper.height(a.size.height);
				a.helper.width(a.size.width);
				this._helper && !g.animate && this._proportionallyResize()
			}
			b("body").css("cursor", "auto");
			this.element.removeClass("ui-resizable-resizing");
			this._propagate("stop", f);
			this._helper && this.helper.remove();
			return false
		},
		_updateCache : function(f) {
			this.offset = this.helper.offset();
			if (e(f.left))
				this.position.left = f.left;
			if (e(f.top))
				this.position.top = f.top;
			if (e(f.height))
				this.size.height = f.height;
			if (e(f.width))
				this.size.width = f.width
		},
		_updateRatio : function(f) {
			var g = this.position, a = this.size, c = this.axis;
			if (f.height)
				f.width = a.height * this.aspectRatio;
			else if (f.width)
				f.height = a.width / this.aspectRatio;
			if (c == "sw") {
				f.left = g.left + (a.width - f.width);
				f.top = null
			}
			if (c == "nw") {
				f.top = g.top + (a.height - f.height);
				f.left = g.left + (a.width - f.width)
			}
			return f
		},
		_respectSize : function(f) {
			var g = this.options, a = this.axis, c = e(f.width) && g.maxWidth
					&& g.maxWidth < f.width, h = e(f.height) && g.maxHeight
					&& g.maxHeight < f.height, i = e(f.width) && g.minWidth
					&& g.minWidth > f.width, j = e(f.height) && g.minHeight
					&& g.minHeight > f.height;
			if (i)
				f.width = g.minWidth;
			if (j)
				f.height = g.minHeight;
			if (c)
				f.width = g.maxWidth;
			if (h)
				f.height = g.maxHeight;
			var n = this.originalPosition.left + this.originalSize.width, o = this.position.top
					+ this.size.height, l = /sw|nw|w/.test(a);
			a = /nw|ne|n/.test(a);
			if (i && l)
				f.left = n - g.minWidth;
			if (c && l)
				f.left = n - g.maxWidth;
			if (j && a)
				f.top = o - g.minHeight;
			if (h && a)
				f.top = o - g.maxHeight;
			if ((g = !f.width && !f.height) && !f.left && f.top)
				f.top = null;
			else if (g && !f.top && f.left)
				f.left = null;
			return f
		},
		_proportionallyResize : function() {
			if (this._proportionallyResizeElements.length)
				for (var f = this.helper || this.element, g = 0; g < this._proportionallyResizeElements.length; g++) {
					var a = this._proportionallyResizeElements[g];
					if (!this.borderDif) {
						var c = [a.css("borderTopWidth"),
								a.css("borderRightWidth"),
								a.css("borderBottomWidth"),
								a.css("borderLeftWidth")], h = [
								a.css("paddingTop"), a.css("paddingRight"),
								a.css("paddingBottom"), a.css("paddingLeft")];
						this.borderDif = b.map(c, function(i, j) {
									i = parseInt(i, 10) || 0;
									j = parseInt(h[j], 10) || 0;
									return i + j
								})
					}
					b.browser.msie
							&& (b(f).is(":hidden") || b(f).parents(":hidden").length)
							|| a.css({
										height : f.height() - this.borderDif[0]
												- this.borderDif[2] || 0,
										width : f.width() - this.borderDif[1]
												- this.borderDif[3] || 0
									})
				}
		},
		_renderProxy : function() {
			var f = this.options;
			this.elementOffset = this.element.offset();
			if (this._helper) {
				this.helper = this.helper
						|| b('<div style="overflow:hidden;"></div>');
				var g = b.browser.msie && b.browser.version < 7, a = g ? 1 : 0;
				g = g ? 2 : -1;
				this.helper.addClass(this._helper).css({
							width : this.element.outerWidth() + g,
							height : this.element.outerHeight() + g,
							position : "absolute",
							left : this.elementOffset.left - a + "px",
							top : this.elementOffset.top - a + "px",
							zIndex : ++f.zIndex
						});
				this.helper.appendTo("body").disableSelection()
			} else
				this.helper = this.element
		},
		_change : {
			e : function(f, g) {
				return {
					width : this.originalSize.width + g
				}
			},
			w : function(f, g) {
				return {
					left : this.originalPosition.left + g,
					width : this.originalSize.width - g
				}
			},
			n : function(f, g, a) {
				return {
					top : this.originalPosition.top + a,
					height : this.originalSize.height - a
				}
			},
			s : function(f, g, a) {
				return {
					height : this.originalSize.height + a
				}
			},
			se : function(f, g, a) {
				return b.extend(this._change.s.apply(this, arguments),
						this._change.e.apply(this, [f, g, a]))
			},
			sw : function(f, g, a) {
				return b.extend(this._change.s.apply(this, arguments),
						this._change.w.apply(this, [f, g, a]))
			},
			ne : function(f, g, a) {
				return b.extend(this._change.n.apply(this, arguments),
						this._change.e.apply(this, [f, g, a]))
			},
			nw : function(f, g, a) {
				return b.extend(this._change.n.apply(this, arguments),
						this._change.w.apply(this, [f, g, a]))
			}
		},
		_propagate : function(f, g) {
			b.ui.plugin.call(this, f, [g, this.ui()]);
			f != "resize" && this._trigger(f, g, this.ui())
		},
		plugins : {},
		ui : function() {
			return {
				originalElement : this.originalElement,
				element : this.element,
				helper : this.helper,
				position : this.position,
				size : this.size,
				originalSize : this.originalSize,
				originalPosition : this.originalPosition
			}
		}
	});
	b.extend(b.ui.resizable, {
				version : "1.8.12"
			});
	b.ui.plugin.add("resizable", "alsoResize", {
		start : function() {
			var f = b(this).data("resizable").options, g = function(a) {
				b(a).each(function() {
							var c = b(this);
							c.data("resizable-alsoresize", {
										width : parseInt(c.width(), 10),
										height : parseInt(c.height(), 10),
										left : parseInt(c.css("left"), 10),
										top : parseInt(c.css("top"), 10),
										position : c.css("position")
									})
						})
			};
			if (typeof f.alsoResize == "object" && !f.alsoResize.parentNode)
				if (f.alsoResize.length) {
					f.alsoResize = f.alsoResize[0];
					g(f.alsoResize)
				} else
					b.each(f.alsoResize, function(a) {
								g(a)
							});
			else
				g(f.alsoResize)
		},
		resize : function(f, g) {
			var a = b(this).data("resizable");
			f = a.options;
			var c = a.originalSize, h = a.originalPosition, i = {
				height : a.size.height - c.height || 0,
				width : a.size.width - c.width || 0,
				top : a.position.top - h.top || 0,
				left : a.position.left - h.left || 0
			}, j = function(n, o) {
				b(n).each(function() {
					var l = b(this), k = b(this).data("resizable-alsoresize"), m = {}, p = o
							&& o.length
							? o
							: l.parents(g.originalElement[0]).length ? [
									"width", "height"] : ["width", "height",
									"top", "left"];
					b.each(p, function(q, s) {
								if ((q = (k[s] || 0) + (i[s] || 0)) && q >= 0)
									m[s] = q || null
							});
					if (b.browser.opera && /relative/.test(l.css("position"))) {
						a._revertToRelativePosition = true;
						l.css({
									position : "absolute",
									top : "auto",
									left : "auto"
								})
					}
					l.css(m)
				})
			};
			typeof f.alsoResize == "object" && !f.alsoResize.nodeType ? b.each(
					f.alsoResize, function(n, o) {
						j(n, o)
					}) : j(f.alsoResize)
		},
		stop : function() {
			var f = b(this).data("resizable"), g = f.options, a = function(c) {
				b(c).each(function() {
					var h = b(this);
					h.css({
								position : h.data("resizable-alsoresize").position
							})
				})
			};
			if (f._revertToRelativePosition) {
				f._revertToRelativePosition = false;
				typeof g.alsoResize == "object" && !g.alsoResize.nodeType ? b
						.each(g.alsoResize, function(c) {
									a(c)
								}) : a(g.alsoResize)
			}
			b(this).removeData("resizable-alsoresize")
		}
	});
	b.ui.plugin.add("resizable", "animate", {
		stop : function(f) {
			var g = b(this).data("resizable"), a = g.options, c = g._proportionallyResizeElements, h = c.length
					&& /textarea/i.test(c[0].nodeName), i = h
					&& b.ui.hasScroll(c[0], "left") ? 0 : g.sizeDiff.height;
			h = {
				width : g.size.width - (h ? 0 : g.sizeDiff.width),
				height : g.size.height - i
			};
			i = parseInt(g.element.css("left"), 10)
					+ (g.position.left - g.originalPosition.left) || null;
			var j = parseInt(g.element.css("top"), 10)
					+ (g.position.top - g.originalPosition.top) || null;
			g.element.animate(b.extend(h, j && i ? {
								top : j,
								left : i
							} : {}), {
						duration : a.animateDuration,
						easing : a.animateEasing,
						step : function() {
							var n = {
								width : parseInt(g.element.css("width"), 10),
								height : parseInt(g.element.css("height"), 10),
								top : parseInt(g.element.css("top"), 10),
								left : parseInt(g.element.css("left"), 10)
							};
							c && c.length && b(c[0]).css({
										width : n.width,
										height : n.height
									});
							g._updateCache(n);
							g._propagate("resize", f)
						}
					})
		}
	});
	b.ui.plugin.add("resizable", "containment", {
		start : function() {
			var f = b(this).data("resizable"), g = f.element, a = f.options.containment;
			if (g = a instanceof b ? a.get(0) : /parent/.test(a) ? g.parent()
					.get(0) : a) {
				f.containerElement = b(g);
				if (/document/.test(a) || a == document) {
					f.containerOffset = {
						left : 0,
						top : 0
					};
					f.containerPosition = {
						left : 0,
						top : 0
					};
					f.parentData = {
						element : b(document),
						left : 0,
						top : 0,
						width : b(document).width(),
						height : b(document).height()
								|| document.body.parentNode.scrollHeight
					}
				} else {
					var c = b(g), h = [];
					b(["Top", "Right", "Left", "Bottom"]).each(function(n, o) {
								h[n] = d(c.css("padding" + o))
							});
					f.containerOffset = c.offset();
					f.containerPosition = c.position();
					f.containerSize = {
						height : c.innerHeight() - h[3],
						width : c.innerWidth() - h[1]
					};
					a = f.containerOffset;
					var i = f.containerSize.height, j = f.containerSize.width;
					j = b.ui.hasScroll(g, "left") ? g.scrollWidth : j;
					i = b.ui.hasScroll(g) ? g.scrollHeight : i;
					f.parentData = {
						element : g,
						left : a.left,
						top : a.top,
						width : j,
						height : i
					}
				}
			}
		},
		resize : function(f) {
			var g = b(this).data("resizable"), a = g.options, c = g.containerOffset, h = g.position;
			f = g._aspectRatio || f.shiftKey;
			var i = {
				top : 0,
				left : 0
			}, j = g.containerElement;
			if (j[0] != document && /static/.test(j.css("position")))
				i = c;
			if (h.left < (g._helper ? c.left : 0)) {
				g.size.width += g._helper
						? g.position.left - c.left
						: g.position.left - i.left;
				if (f)
					g.size.height = g.size.width / a.aspectRatio;
				g.position.left = a.helper ? c.left : 0
			}
			if (h.top < (g._helper ? c.top : 0)) {
				g.size.height += g._helper
						? g.position.top - c.top
						: g.position.top;
				if (f)
					g.size.width = g.size.height * a.aspectRatio;
				g.position.top = g._helper ? c.top : 0
			}
			g.offset.left = g.parentData.left + g.position.left;
			g.offset.top = g.parentData.top + g.position.top;
			a = Math.abs((g._helper ? g.offset.left - i.left : g.offset.left
					- i.left)
					+ g.sizeDiff.width);
			c = Math.abs((g._helper ? g.offset.top - i.top : g.offset.top
					- c.top)
					+ g.sizeDiff.height);
			h = g.containerElement.get(0) == g.element.parent().get(0);
			i = /relative|absolute/.test(g.containerElement.css("position"));
			if (h && i)
				a -= g.parentData.left;
			if (a + g.size.width >= g.parentData.width) {
				g.size.width = g.parentData.width - a;
				if (f)
					g.size.height = g.size.width / g.aspectRatio
			}
			if (c + g.size.height >= g.parentData.height) {
				g.size.height = g.parentData.height - c;
				if (f)
					g.size.width = g.size.height * g.aspectRatio
			}
		},
		stop : function() {
			var f = b(this).data("resizable"), g = f.options, a = f.containerOffset, c = f.containerPosition, h = f.containerElement, i = b(f.helper), j = i
					.offset(), n = i.outerWidth() - f.sizeDiff.width;
			i = i.outerHeight() - f.sizeDiff.height;
			f._helper && !g.animate && /relative/.test(h.css("position"))
					&& b(this).css({
								left : j.left - c.left - a.left,
								width : n,
								height : i
							});
			f._helper && !g.animate && /static/.test(h.css("position"))
					&& b(this).css({
								left : j.left - c.left - a.left,
								width : n,
								height : i
							})
		}
	});
	b.ui.plugin.add("resizable", "ghost", {
				start : function() {
					var f = b(this).data("resizable"), g = f.options, a = f.size;
					f.ghost = f.originalElement.clone();
					f.ghost
							.css({
										opacity : 0.25,
										display : "block",
										position : "relative",
										height : a.height,
										width : a.width,
										margin : 0,
										left : 0,
										top : 0
									})
							.addClass("ui-resizable-ghost")
							.addClass(typeof g.ghost == "string" ? g.ghost : "");
					f.ghost.appendTo(f.helper)
				},
				resize : function() {
					var f = b(this).data("resizable");
					f.ghost && f.ghost.css({
								position : "relative",
								height : f.size.height,
								width : f.size.width
							})
				},
				stop : function() {
					var f = b(this).data("resizable");
					f.ghost && f.helper
							&& f.helper.get(0).removeChild(f.ghost.get(0))
				}
			});
	b.ui.plugin.add("resizable", "grid", {
		resize : function() {
			var f = b(this).data("resizable"), g = f.options, a = f.size, c = f.originalSize, h = f.originalPosition, i = f.axis;
			g.grid = typeof g.grid == "number" ? [g.grid, g.grid] : g.grid;
			var j = Math.round((a.width - c.width) / (g.grid[0] || 1))
					* (g.grid[0] || 1);
			g = Math.round((a.height - c.height) / (g.grid[1] || 1))
					* (g.grid[1] || 1);
			if (/^(se|s|e)$/.test(i)) {
				f.size.width = c.width + j;
				f.size.height = c.height + g
			} else if (/^(ne)$/.test(i)) {
				f.size.width = c.width + j;
				f.size.height = c.height + g;
				f.position.top = h.top - g
			} else {
				if (/^(sw)$/.test(i)) {
					f.size.width = c.width + j;
					f.size.height = c.height + g
				} else {
					f.size.width = c.width + j;
					f.size.height = c.height + g;
					f.position.top = h.top - g
				}
				f.position.left = h.left - j
			}
		}
	});
	var d = function(f) {
		return parseInt(f, 10) || 0
	}, e = function(f) {
		return !isNaN(parseInt(f, 10))
	}
})(jQuery);
(function(b) {
	b.widget("ui.selectable", b.ui.mouse, {
		options : {
			appendTo : "body",
			autoRefresh : true,
			distance : 0,
			filter : "*",
			tolerance : "touch"
		},
		_create : function() {
			var d = this;
			this.element.addClass("ui-selectable");
			this.dragged = false;
			var e;
			this.refresh = function() {
				e = b(d.options.filter, d.element[0]);
				e.each(function() {
							var f = b(this), g = f.offset();
							b.data(this, "selectable-item", {
										element : this,
										$element : f,
										left : g.left,
										top : g.top,
										right : g.left + f.outerWidth(),
										bottom : g.top + f.outerHeight(),
										startselected : false,
										selected : f.hasClass("ui-selected"),
										selecting : f.hasClass("ui-selecting"),
										unselecting : f
												.hasClass("ui-unselecting")
									})
						})
			};
			this.refresh();
			this.selectees = e.addClass("ui-selectee");
			this._mouseInit();
			this.helper = b("<div class='ui-selectable-helper'></div>")
		},
		destroy : function() {
			this.selectees.removeClass("ui-selectee")
					.removeData("selectable-item");
			this.element.removeClass("ui-selectable ui-selectable-disabled")
					.removeData("selectable").unbind(".selectable");
			this._mouseDestroy();
			return this
		},
		_mouseStart : function(d) {
			var e = this;
			this.opos = [d.pageX, d.pageY];
			if (!this.options.disabled) {
				var f = this.options;
				this.selectees = b(f.filter, this.element[0]);
				this._trigger("start", d);
				b(f.appendTo).append(this.helper);
				this.helper.css({
							left : d.clientX,
							top : d.clientY,
							width : 0,
							height : 0
						});
				f.autoRefresh && this.refresh();
				this.selectees.filter(".ui-selected").each(function() {
							var g = b.data(this, "selectable-item");
							g.startselected = true;
							if (!d.metaKey) {
								g.$element.removeClass("ui-selected");
								g.selected = false;
								g.$element.addClass("ui-unselecting");
								g.unselecting = true;
								e._trigger("unselecting", d, {
											unselecting : g.element
										})
							}
						});
				b(d.target).parents().andSelf().each(function() {
					var g = b.data(this, "selectable-item");
					if (g) {
						var a = !d.metaKey
								|| !g.$element.hasClass("ui-selected");
						g.$element.removeClass(a
								? "ui-unselecting"
								: "ui-selected").addClass(a
								? "ui-selecting"
								: "ui-unselecting");
						g.unselecting = !a;
						g.selecting = a;
						(g.selected = a) ? e._trigger("selecting", d, {
									selecting : g.element
								}) : e._trigger("unselecting", d, {
									unselecting : g.element
								});
						return false
					}
				})
			}
		},
		_mouseDrag : function(d) {
			var e = this;
			this.dragged = true;
			if (!this.options.disabled) {
				var f = this.options, g = this.opos[0], a = this.opos[1], c = d.pageX, h = d.pageY;
				if (g > c) {
					var i = c;
					c = g;
					g = i
				}
				if (a > h) {
					i = h;
					h = a;
					a = i
				}
				this.helper.css({
							left : g,
							top : a,
							width : c - g,
							height : h - a
						});
				this.selectees.each(function() {
					var j = b.data(this, "selectable-item");
					if (!(!j || j.element == e.element[0])) {
						var n = false;
						if (f.tolerance == "touch")
							n = !(j.left > c || j.right < g || j.top > h || j.bottom < a);
						else if (f.tolerance == "fit")
							n = j.left > g && j.right < c && j.top > a
									&& j.bottom < h;
						if (n) {
							if (j.selected) {
								j.$element.removeClass("ui-selected");
								j.selected = false
							}
							if (j.unselecting) {
								j.$element.removeClass("ui-unselecting");
								j.unselecting = false
							}
							if (!j.selecting) {
								j.$element.addClass("ui-selecting");
								j.selecting = true;
								e._trigger("selecting", d, {
											selecting : j.element
										})
							}
						} else {
							if (j.selecting)
								if (d.metaKey && j.startselected) {
									j.$element.removeClass("ui-selecting");
									j.selecting = false;
									j.$element.addClass("ui-selected");
									j.selected = true
								} else {
									j.$element.removeClass("ui-selecting");
									j.selecting = false;
									if (j.startselected) {
										j.$element.addClass("ui-unselecting");
										j.unselecting = true
									}
									e._trigger("unselecting", d, {
												unselecting : j.element
											})
								}
							if (j.selected)
								if (!d.metaKey && !j.startselected) {
									j.$element.removeClass("ui-selected");
									j.selected = false;
									j.$element.addClass("ui-unselecting");
									j.unselecting = true;
									e._trigger("unselecting", d, {
												unselecting : j.element
											})
								}
						}
					}
				});
				return false
			}
		},
		_mouseStop : function(d) {
			var e = this;
			this.dragged = false;
			b(".ui-unselecting", this.element[0]).each(function() {
						var f = b.data(this, "selectable-item");
						f.$element.removeClass("ui-unselecting");
						f.unselecting = false;
						f.startselected = false;
						e._trigger("unselected", d, {
									unselected : f.element
								})
					});
			b(".ui-selecting", this.element[0]).each(function() {
						var f = b.data(this, "selectable-item");
						f.$element.removeClass("ui-selecting")
								.addClass("ui-selected");
						f.selecting = false;
						f.selected = true;
						f.startselected = true;
						e._trigger("selected", d, {
									selected : f.element
								})
					});
			this._trigger("stop", d);
			this.helper.remove();
			return false
		}
	});
	b.extend(b.ui.selectable, {
				version : "1.8.12"
			})
})(jQuery);
(function(b) {
	b.widget("ui.sortable", b.ui.mouse, {
		widgetEventPrefix : "sort",
		options : {
			appendTo : "parent",
			axis : false,
			connectWith : false,
			containment : false,
			cursor : "auto",
			cursorAt : false,
			dropOnEmpty : true,
			forcePlaceholderSize : false,
			forceHelperSize : false,
			grid : false,
			handle : false,
			helper : "original",
			items : "> *",
			opacity : false,
			placeholder : false,
			revert : false,
			scroll : true,
			scrollSensitivity : 20,
			scrollSpeed : 20,
			scope : "default",
			tolerance : "intersect",
			zIndex : 1E3
		},
		_create : function() {
			this.containerCache = {};
			this.element.addClass("ui-sortable");
			this.refresh();
			this.floating = this.items.length ? /left|right/
					.test(this.items[0].item.css("float"))
					|| /inline|table-cell/.test(this.items[0].item
							.css("display")) : false;
			this.offset = this.element.offset();
			this._mouseInit()
		},
		destroy : function() {
			this.element.removeClass("ui-sortable ui-sortable-disabled")
					.removeData("sortable").unbind(".sortable");
			this._mouseDestroy();
			for (var d = this.items.length - 1; d >= 0; d--)
				this.items[d].item.removeData("sortable-item");
			return this
		},
		_setOption : function(d, e) {
			if (d === "disabled") {
				this.options[d] = e;
				this.widget()[e ? "addClass" : "removeClass"]("ui-sortable-disabled")
			} else
				b.Widget.prototype._setOption.apply(this, arguments)
		},
		_mouseCapture : function(d, e) {
			if (this.reverting)
				return false;
			if (this.options.disabled || this.options.type == "static")
				return false;
			this._refreshItems(d);
			var f = null, g = this;
			b(d.target).parents().each(function() {
						if (b.data(this, "sortable-item") == g) {
							f = b(this);
							return false
						}
					});
			if (b.data(d.target, "sortable-item") == g)
				f = b(d.target);
			if (!f)
				return false;
			if (this.options.handle && !e) {
				var a = false;
				b(this.options.handle, f).find("*").andSelf().each(function() {
							if (this == d.target)
								a = true
						});
				if (!a)
					return false
			}
			this.currentItem = f;
			this._removeCurrentsFromItems();
			return true
		},
		_mouseStart : function(d, e, f) {
			e = this.options;
			var g = this;
			this.currentContainer = this;
			this.refreshPositions();
			this.helper = this._createHelper(d);
			this._cacheHelperProportions();
			this._cacheMargins();
			this.scrollParent = this.helper.scrollParent();
			this.offset = this.currentItem.offset();
			this.offset = {
				top : this.offset.top - this.margins.top,
				left : this.offset.left - this.margins.left
			};
			this.helper.css("position", "absolute");
			this.cssPosition = this.helper.css("position");
			b.extend(this.offset, {
						click : {
							left : d.pageX - this.offset.left,
							top : d.pageY - this.offset.top
						},
						parent : this._getParentOffset(),
						relative : this._getRelativeOffset()
					});
			this.originalPosition = this._generatePosition(d);
			this.originalPageX = d.pageX;
			this.originalPageY = d.pageY;
			e.cursorAt && this._adjustOffsetFromHelper(e.cursorAt);
			this.domPosition = {
				prev : this.currentItem.prev()[0],
				parent : this.currentItem.parent()[0]
			};
			this.helper[0] != this.currentItem[0] && this.currentItem.hide();
			this._createPlaceholder();
			e.containment && this._setContainment();
			if (e.cursor) {
				if (b("body").css("cursor"))
					this._storedCursor = b("body").css("cursor");
				b("body").css("cursor", e.cursor)
			}
			if (e.opacity) {
				if (this.helper.css("opacity"))
					this._storedOpacity = this.helper.css("opacity");
				this.helper.css("opacity", e.opacity)
			}
			if (e.zIndex) {
				if (this.helper.css("zIndex"))
					this._storedZIndex = this.helper.css("zIndex");
				this.helper.css("zIndex", e.zIndex)
			}
			if (this.scrollParent[0] != document
					&& this.scrollParent[0].tagName != "HTML")
				this.overflowOffset = this.scrollParent.offset();
			this._trigger("start", d, this._uiHash());
			this._preserveHelperProportions || this._cacheHelperProportions();
			if (!f)
				for (f = this.containers.length - 1; f >= 0; f--)
					this.containers[f]._trigger("activate", d, g._uiHash(this));
			if (b.ui.ddmanager)
				b.ui.ddmanager.current = this;
			b.ui.ddmanager && !e.dropBehaviour
					&& b.ui.ddmanager.prepareOffsets(this, d);
			this.dragging = true;
			this.helper.addClass("ui-sortable-helper");
			this._mouseDrag(d);
			return true
		},
		_mouseDrag : function(d) {
			this.position = this._generatePosition(d);
			this.positionAbs = this._convertPositionTo("absolute");
			if (!this.lastPositionAbs)
				this.lastPositionAbs = this.positionAbs;
			if (this.options.scroll) {
				var e = this.options, f = false;
				if (this.scrollParent[0] != document
						&& this.scrollParent[0].tagName != "HTML") {
					if (this.overflowOffset.top
							+ this.scrollParent[0].offsetHeight - d.pageY < e.scrollSensitivity)
						this.scrollParent[0].scrollTop = f = this.scrollParent[0].scrollTop
								+ e.scrollSpeed;
					else if (d.pageY - this.overflowOffset.top < e.scrollSensitivity)
						this.scrollParent[0].scrollTop = f = this.scrollParent[0].scrollTop
								- e.scrollSpeed;
					if (this.overflowOffset.left
							+ this.scrollParent[0].offsetWidth - d.pageX < e.scrollSensitivity)
						this.scrollParent[0].scrollLeft = f = this.scrollParent[0].scrollLeft
								+ e.scrollSpeed;
					else if (d.pageX - this.overflowOffset.left < e.scrollSensitivity)
						this.scrollParent[0].scrollLeft = f = this.scrollParent[0].scrollLeft
								- e.scrollSpeed
				} else {
					if (d.pageY - b(document).scrollTop() < e.scrollSensitivity)
						f = b(document).scrollTop(b(document).scrollTop()
								- e.scrollSpeed);
					else if (b(window).height()
							- (d.pageY - b(document).scrollTop()) < e.scrollSensitivity)
						f = b(document).scrollTop(b(document).scrollTop()
								+ e.scrollSpeed);
					if (d.pageX - b(document).scrollLeft() < e.scrollSensitivity)
						f = b(document).scrollLeft(b(document).scrollLeft()
								- e.scrollSpeed);
					else if (b(window).width()
							- (d.pageX - b(document).scrollLeft()) < e.scrollSensitivity)
						f = b(document).scrollLeft(b(document).scrollLeft()
								+ e.scrollSpeed)
				}
				f !== false && b.ui.ddmanager && !e.dropBehaviour
						&& b.ui.ddmanager.prepareOffsets(this, d)
			}
			this.positionAbs = this._convertPositionTo("absolute");
			if (!this.options.axis || this.options.axis != "y")
				this.helper[0].style.left = this.position.left + "px";
			if (!this.options.axis || this.options.axis != "x")
				this.helper[0].style.top = this.position.top + "px";
			for (e = this.items.length - 1; e >= 0; e--) {
				f = this.items[e];
				var g = f.item[0], a = this._intersectsWithPointer(f);
				if (a)
					if (g != this.currentItem[0]
							&& this.placeholder[a == 1 ? "next" : "prev"]()[0] != g
							&& !b.ui.contains(this.placeholder[0], g)
							&& (this.options.type == "semi-dynamic" ? !b.ui
									.contains(this.element[0], g) : true)) {
						this.direction = a == 1 ? "down" : "up";
						if (this.options.tolerance == "pointer"
								|| this._intersectsWithSides(f))
							this._rearrange(d, f);
						else
							break;
						this._trigger("change", d, this._uiHash());
						break
					}
			}
			this._contactContainers(d);
			b.ui.ddmanager && b.ui.ddmanager.drag(this, d);
			this._trigger("sort", d, this._uiHash());
			this.lastPositionAbs = this.positionAbs;
			return false
		},
		_mouseStop : function(d, e) {
			if (d) {
				b.ui.ddmanager && !this.options.dropBehaviour
						&& b.ui.ddmanager.drop(this, d);
				if (this.options.revert) {
					var f = this;
					e = f.placeholder.offset();
					f.reverting = true;
					b(this.helper).animate({
						left : e.left
								- this.offset.parent.left
								- f.margins.left
								+ (this.offsetParent[0] == document.body
										? 0
										: this.offsetParent[0].scrollLeft),
						top : e.top
								- this.offset.parent.top
								- f.margins.top
								+ (this.offsetParent[0] == document.body
										? 0
										: this.offsetParent[0].scrollTop)
					}, parseInt(this.options.revert, 10) || 500, function() {
						f._clear(d)
					})
				} else
					this._clear(d, e);
				return false
			}
		},
		cancel : function() {
			var d = this;
			if (this.dragging) {
				this._mouseUp({
							target : null
						});
				this.options.helper == "original"
						? this.currentItem.css(this._storedCSS)
								.removeClass("ui-sortable-helper")
						: this.currentItem.show();
				for (var e = this.containers.length - 1; e >= 0; e--) {
					this.containers[e]._trigger("deactivate", null, d
									._uiHash(this));
					if (this.containers[e].containerCache.over) {
						this.containers[e]._trigger("out", null, d
										._uiHash(this));
						this.containers[e].containerCache.over = 0
					}
				}
			}
			if (this.placeholder) {
				this.placeholder[0].parentNode
						&& this.placeholder[0].parentNode
								.removeChild(this.placeholder[0]);
				this.options.helper != "original" && this.helper
						&& this.helper[0].parentNode && this.helper.remove();
				b.extend(this, {
							helper : null,
							dragging : false,
							reverting : false,
							_noFinalSort : null
						});
				this.domPosition.prev ? b(this.domPosition.prev)
						.after(this.currentItem) : b(this.domPosition.parent)
						.prepend(this.currentItem)
			}
			return this
		},
		serialize : function(d) {
			var e = this._getItemsAsjQuery(d && d.connected), f = [];
			d = d || {};
			b(e).each(function() {
				var g = (b(d.item || this).attr(d.attribute || "id") || "")
						.match(d.expression || /(.+)[-=_](.+)/);
				if (g)
					f.push((d.key || g[1] + "[]") + "="
							+ (d.key && d.expression ? g[1] : g[2]))
			});
			!f.length && d.key && f.push(d.key + "=");
			return f.join("&")
		},
		toArray : function(d) {
			var e = this._getItemsAsjQuery(d && d.connected), f = [];
			d = d || {};
			e.each(function() {
						f.push(b(d.item || this).attr(d.attribute || "id")
								|| "")
					});
			return f
		},
		_intersectsWith : function(d) {
			var e = this.positionAbs.left, f = e + this.helperProportions.width, g = this.positionAbs.top, a = g
					+ this.helperProportions.height, c = d.left, h = c
					+ d.width, i = d.top, j = i + d.height, n = this.offset.click.top, o = this.offset.click.left;
			n = g + n > i && g + n < j && e + o > c && e + o < h;
			return this.options.tolerance == "pointer"
					|| this.options.forcePointerForContainers
					|| this.options.tolerance != "pointer"
					&& this.helperProportions[this.floating
							? "width"
							: "height"] > d[this.floating ? "width" : "height"]
					? n
					: c < e + this.helperProportions.width / 2
							&& f - this.helperProportions.width / 2 < h
							&& i < g + this.helperProportions.height / 2
							&& a - this.helperProportions.height / 2 < j
		},
		_intersectsWithPointer : function(d) {
			var e = b.ui.isOverAxis(this.positionAbs.top
							+ this.offset.click.top, d.top, d.height);
			d = b.ui.isOverAxis(this.positionAbs.left + this.offset.click.left,
					d.left, d.width);
			e = e && d;
			d = this._getDragVerticalDirection();
			var f = this._getDragHorizontalDirection();
			if (!e)
				return false;
			return this.floating ? f && f == "right" || d == "down" ? 2 : 1 : d
					&& (d == "down" ? 2 : 1)
		},
		_intersectsWithSides : function(d) {
			var e = b.ui.isOverAxis(this.positionAbs.top
							+ this.offset.click.top, d.top + d.height / 2,
					d.height);
			d = b.ui.isOverAxis(this.positionAbs.left + this.offset.click.left,
					d.left + d.width / 2, d.width);
			var f = this._getDragVerticalDirection(), g = this
					._getDragHorizontalDirection();
			return this.floating && g
					? g == "right" && d || g == "left" && !d
					: f && (f == "down" && e || f == "up" && !e)
		},
		_getDragVerticalDirection : function() {
			var d = this.positionAbs.top - this.lastPositionAbs.top;
			return d != 0 && (d > 0 ? "down" : "up")
		},
		_getDragHorizontalDirection : function() {
			var d = this.positionAbs.left - this.lastPositionAbs.left;
			return d != 0 && (d > 0 ? "right" : "left")
		},
		refresh : function(d) {
			this._refreshItems(d);
			this.refreshPositions();
			return this
		},
		_connectWith : function() {
			var d = this.options;
			return d.connectWith.constructor == String
					? [d.connectWith]
					: d.connectWith
		},
		_getItemsAsjQuery : function(d) {
			var e = [], f = [], g = this._connectWith();
			if (g && d)
				for (d = g.length - 1; d >= 0; d--)
					for (var a = b(g[d]), c = a.length - 1; c >= 0; c--) {
						var h = b.data(a[c], "sortable");
						if (h && h != this && !h.options.disabled)
							f
									.push([
											b.isFunction(h.options.items)
													? h.options.items
															.call(h.element)
													: b(h.options.items,
															h.element)
															.not(".ui-sortable-helper")
															.not(".ui-sortable-placeholder"),
											h])
					}
			f.push([
					b.isFunction(this.options.items) ? this.options.items.call(
							this.element, null, {
								options : this.options,
								item : this.currentItem
							}) : b(this.options.items, this.element)
							.not(".ui-sortable-helper")
							.not(".ui-sortable-placeholder"), this]);
			for (d = f.length - 1; d >= 0; d--)
				f[d][0].each(function() {
							e.push(this)
						});
			return b(e)
		},
		_removeCurrentsFromItems : function() {
			for (var d = this.currentItem.find(":data(sortable-item)"), e = 0; e < this.items.length; e++)
				for (var f = 0; f < d.length; f++)
					d[f] == this.items[e].item[0] && this.items.splice(e, 1)
		},
		_refreshItems : function(d) {
			this.items = [];
			this.containers = [this];
			var e = this.items, f = [[
					b.isFunction(this.options.items) ? this.options.items.call(
							this.element[0], d, {
								item : this.currentItem
							}) : b(this.options.items, this.element), this]], g = this
					._connectWith();
			if (g)
				for (var a = g.length - 1; a >= 0; a--)
					for (var c = b(g[a]), h = c.length - 1; h >= 0; h--) {
						var i = b.data(c[h], "sortable");
						if (i && i != this && !i.options.disabled) {
							f
									.push([
											b.isFunction(i.options.items)
													? i.options.items.call(
															i.element[0], d, {
																item : this.currentItem
															})
													: b(i.options.items,
															i.element), i]);
							this.containers.push(i)
						}
					}
			for (a = f.length - 1; a >= 0; a--) {
				d = f[a][1];
				g = f[a][0];
				h = 0;
				for (c = g.length; h < c; h++) {
					i = b(g[h]);
					i.data("sortable-item", d);
					e.push({
								item : i,
								instance : d,
								width : 0,
								height : 0,
								left : 0,
								top : 0
							})
				}
			}
		},
		refreshPositions : function(d) {
			if (this.offsetParent && this.helper)
				this.offset.parent = this._getParentOffset();
			for (var e = this.items.length - 1; e >= 0; e--) {
				var f = this.items[e];
				if (!(f.instance != this.currentContainer
						&& this.currentContainer && f.item[0] != this.currentItem[0])) {
					var g = this.options.toleranceElement ? b(
							this.options.toleranceElement, f.item) : f.item;
					if (!d) {
						f.width = g.outerWidth();
						f.height = g.outerHeight()
					}
					g = g.offset();
					f.left = g.left;
					f.top = g.top
				}
			}
			if (this.options.custom && this.options.custom.refreshContainers)
				this.options.custom.refreshContainers.call(this);
			else
				for (e = this.containers.length - 1; e >= 0; e--) {
					g = this.containers[e].element.offset();
					this.containers[e].containerCache.left = g.left;
					this.containers[e].containerCache.top = g.top;
					this.containers[e].containerCache.width = this.containers[e].element
							.outerWidth();
					this.containers[e].containerCache.height = this.containers[e].element
							.outerHeight()
				}
			return this
		},
		_createPlaceholder : function(d) {
			var e = d || this, f = e.options;
			if (!f.placeholder || f.placeholder.constructor == String) {
				var g = f.placeholder;
				f.placeholder = {
					element : function() {
						var a = b(document
								.createElement(e.currentItem[0].nodeName))
								.addClass(g || e.currentItem[0].className
										+ " ui-sortable-placeholder")
								.removeClass("ui-sortable-helper")[0];
						if (!g)
							a.style.visibility = "hidden";
						return a
					},
					update : function(a, c) {
						if (!(g && !f.forcePlaceholderSize)) {
							c.height()
									|| c
											.height(e.currentItem.innerHeight()
													- parseInt(
															e.currentItem
																	.css("paddingTop")
																	|| 0, 10)
													- parseInt(
															e.currentItem
																	.css("paddingBottom")
																	|| 0, 10));
							c.width()
									|| c
											.width(e.currentItem.innerWidth()
													- parseInt(
															e.currentItem
																	.css("paddingLeft")
																	|| 0, 10)
													- parseInt(
															e.currentItem
																	.css("paddingRight")
																	|| 0, 10))
						}
					}
				}
			}
			e.placeholder = b(f.placeholder.element.call(e.element,
					e.currentItem));
			e.currentItem.after(e.placeholder);
			f.placeholder.update(e, e.placeholder)
		},
		_contactContainers : function(d) {
			for (var e = null, f = null, g = this.containers.length - 1; g >= 0; g--)
				if (!b.ui.contains(this.currentItem[0],
						this.containers[g].element[0]))
					if (this._intersectsWith(this.containers[g].containerCache)) {
						if (!(e && b.ui.contains(this.containers[g].element[0],
								e.element[0]))) {
							e = this.containers[g];
							f = g
						}
					} else if (this.containers[g].containerCache.over) {
						this.containers[g]._trigger("out", d, this
										._uiHash(this));
						this.containers[g].containerCache.over = 0
					}
			if (e)
				if (this.containers.length === 1) {
					this.containers[f]._trigger("over", d, this._uiHash(this));
					this.containers[f].containerCache.over = 1
				} else if (this.currentContainer != this.containers[f]) {
					e = 1E4;
					g = null;
					for (var a = this.positionAbs[this.containers[f].floating
							? "left"
							: "top"], c = this.items.length - 1; c >= 0; c--)
						if (b.ui.contains(this.containers[f].element[0],
								this.items[c].item[0])) {
							var h = this.items[c][this.containers[f].floating
									? "left"
									: "top"];
							if (Math.abs(h - a) < e) {
								e = Math.abs(h - a);
								g = this.items[c]
							}
						}
					if (g || this.options.dropOnEmpty) {
						this.currentContainer = this.containers[f];
						g ? this._rearrange(d, g, null, true) : this
								._rearrange(d, null,
										this.containers[f].element, true);
						this._trigger("change", d, this._uiHash());
						this.containers[f]._trigger("change", d, this
										._uiHash(this));
						this.options.placeholder.update(this.currentContainer,
								this.placeholder);
						this.containers[f]._trigger("over", d, this
										._uiHash(this));
						this.containers[f].containerCache.over = 1
					}
				}
		},
		_createHelper : function(d) {
			var e = this.options;
			d = b.isFunction(e.helper) ? b(e.helper.apply(this.element[0], [d,
							this.currentItem])) : e.helper == "clone"
					? this.currentItem.clone()
					: this.currentItem;
			d.parents("body").length
					|| b(e.appendTo != "parent"
							? e.appendTo
							: this.currentItem[0].parentNode)[0]
							.appendChild(d[0]);
			if (d[0] == this.currentItem[0])
				this._storedCSS = {
					width : this.currentItem[0].style.width,
					height : this.currentItem[0].style.height,
					position : this.currentItem.css("position"),
					top : this.currentItem.css("top"),
					left : this.currentItem.css("left")
				};
			if (d[0].style.width == "" || e.forceHelperSize)
				d.width(this.currentItem.width());
			if (d[0].style.height == "" || e.forceHelperSize)
				d.height(this.currentItem.height());
			return d
		},
		_adjustOffsetFromHelper : function(d) {
			if (typeof d == "string")
				d = d.split(" ");
			if (b.isArray(d))
				d = {
					left : +d[0],
					top : +d[1] || 0
				};
			if ("left" in d)
				this.offset.click.left = d.left + this.margins.left;
			if ("right" in d)
				this.offset.click.left = this.helperProportions.width - d.right
						+ this.margins.left;
			if ("top" in d)
				this.offset.click.top = d.top + this.margins.top;
			if ("bottom" in d)
				this.offset.click.top = this.helperProportions.height
						- d.bottom + this.margins.top
		},
		_getParentOffset : function() {
			this.offsetParent = this.helper.offsetParent();
			var d = this.offsetParent.offset();
			if (this.cssPosition == "absolute"
					&& this.scrollParent[0] != document
					&& b.ui
							.contains(this.scrollParent[0],
									this.offsetParent[0])) {
				d.left += this.scrollParent.scrollLeft();
				d.top += this.scrollParent.scrollTop()
			}
			if (this.offsetParent[0] == document.body
					|| this.offsetParent[0].tagName
					&& this.offsetParent[0].tagName.toLowerCase() == "html"
					&& b.browser.msie)
				d = {
					top : 0,
					left : 0
				};
			return {
				top : d.top
						+ (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
				left : d.left
						+ (parseInt(this.offsetParent.css("borderLeftWidth"),
								10) || 0)
			}
		},
		_getRelativeOffset : function() {
			if (this.cssPosition == "relative") {
				var d = this.currentItem.position();
				return {
					top : d.top - (parseInt(this.helper.css("top"), 10) || 0)
							+ this.scrollParent.scrollTop(),
					left : d.left
							- (parseInt(this.helper.css("left"), 10) || 0)
							+ this.scrollParent.scrollLeft()
				}
			} else
				return {
					top : 0,
					left : 0
				}
		},
		_cacheMargins : function() {
			this.margins = {
				left : parseInt(this.currentItem.css("marginLeft"), 10) || 0,
				top : parseInt(this.currentItem.css("marginTop"), 10) || 0
			}
		},
		_cacheHelperProportions : function() {
			this.helperProportions = {
				width : this.helper.outerWidth(),
				height : this.helper.outerHeight()
			}
		},
		_setContainment : function() {
			var d = this.options;
			if (d.containment == "parent")
				d.containment = this.helper[0].parentNode;
			if (d.containment == "document" || d.containment == "window")
				this.containment = [
						0 - this.offset.relative.left - this.offset.parent.left,
						0 - this.offset.relative.top - this.offset.parent.top,
						b(d.containment == "document" ? document : window)
								.width()
								- this.helperProportions.width
								- this.margins.left,
						(b(d.containment == "document" ? document : window)
								.height() || document.body.parentNode.scrollHeight)
								- this.helperProportions.height
								- this.margins.top];
			if (!/^(document|window|parent)$/.test(d.containment)) {
				var e = b(d.containment)[0];
				d = b(d.containment).offset();
				var f = b(e).css("overflow") != "hidden";
				this.containment = [
						d.left
								+ (parseInt(b(e).css("borderLeftWidth"), 10) || 0)
								+ (parseInt(b(e).css("paddingLeft"), 10) || 0)
								- this.margins.left,
						d.top + (parseInt(b(e).css("borderTopWidth"), 10) || 0)
								+ (parseInt(b(e).css("paddingTop"), 10) || 0)
								- this.margins.top,
						d.left
								+ (f
										? Math
												.max(e.scrollWidth,
														e.offsetWidth)
										: e.offsetWidth)
								- (parseInt(b(e).css("borderLeftWidth"), 10) || 0)
								- (parseInt(b(e).css("paddingRight"), 10) || 0)
								- this.helperProportions.width
								- this.margins.left,
						d.top
								+ (f
										? Math.max(e.scrollHeight,
												e.offsetHeight)
										: e.offsetHeight)
								- (parseInt(b(e).css("borderTopWidth"), 10) || 0)
								- (parseInt(b(e).css("paddingBottom"), 10) || 0)
								- this.helperProportions.height
								- this.margins.top]
			}
		},
		_convertPositionTo : function(d, e) {
			if (!e)
				e = this.position;
			d = d == "absolute" ? 1 : -1;
			var f = this.cssPosition == "absolute"
					&& !(this.scrollParent[0] != document && b.ui.contains(
							this.scrollParent[0], this.offsetParent[0]))
					? this.offsetParent
					: this.scrollParent, g = /(html|body)/i.test(f[0].tagName);
			return {
				top : e.top
						+ this.offset.relative.top
						* d
						+ this.offset.parent.top
						* d
						- (b.browser.safari && this.cssPosition == "fixed"
								? 0
								: (this.cssPosition == "fixed"
										? -this.scrollParent.scrollTop()
										: g ? 0 : f.scrollTop())
										* d),
				left : e.left
						+ this.offset.relative.left
						* d
						+ this.offset.parent.left
						* d
						- (b.browser.safari && this.cssPosition == "fixed"
								? 0
								: (this.cssPosition == "fixed"
										? -this.scrollParent.scrollLeft()
										: g ? 0 : f.scrollLeft())
										* d)
			}
		},
		_generatePosition : function(d) {
			var e = this.options, f = this.cssPosition == "absolute"
					&& !(this.scrollParent[0] != document && b.ui.contains(
							this.scrollParent[0], this.offsetParent[0]))
					? this.offsetParent
					: this.scrollParent, g = /(html|body)/i.test(f[0].tagName);
			if (this.cssPosition == "relative"
					&& !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0]))
				this.offset.relative = this._getRelativeOffset();
			var a = d.pageX, c = d.pageY;
			if (this.originalPosition) {
				if (this.containment) {
					if (d.pageX - this.offset.click.left < this.containment[0])
						a = this.containment[0] + this.offset.click.left;
					if (d.pageY - this.offset.click.top < this.containment[1])
						c = this.containment[1] + this.offset.click.top;
					if (d.pageX - this.offset.click.left > this.containment[2])
						a = this.containment[2] + this.offset.click.left;
					if (d.pageY - this.offset.click.top > this.containment[3])
						c = this.containment[3] + this.offset.click.top
				}
				if (e.grid) {
					c = this.originalPageY
							+ Math.round((c - this.originalPageY) / e.grid[1])
							* e.grid[1];
					c = this.containment
							? !(c - this.offset.click.top < this.containment[1] || c
									- this.offset.click.top > this.containment[3])
									? c
									: !(c - this.offset.click.top < this.containment[1])
											? c - e.grid[1]
											: c + e.grid[1]
							: c;
					a = this.originalPageX
							+ Math.round((a - this.originalPageX) / e.grid[0])
							* e.grid[0];
					a = this.containment
							? !(a - this.offset.click.left < this.containment[0] || a
									- this.offset.click.left > this.containment[2])
									? a
									: !(a - this.offset.click.left < this.containment[0])
											? a - e.grid[0]
											: a + e.grid[0]
							: a
				}
			}
			return {
				top : c
						- this.offset.click.top
						- this.offset.relative.top
						- this.offset.parent.top
						+ (b.browser.safari && this.cssPosition == "fixed"
								? 0
								: this.cssPosition == "fixed"
										? -this.scrollParent.scrollTop()
										: g ? 0 : f.scrollTop()),
				left : a
						- this.offset.click.left
						- this.offset.relative.left
						- this.offset.parent.left
						+ (b.browser.safari && this.cssPosition == "fixed"
								? 0
								: this.cssPosition == "fixed"
										? -this.scrollParent.scrollLeft()
										: g ? 0 : f.scrollLeft())
			}
		},
		_rearrange : function(d, e, f, g) {
			f ? f[0].appendChild(this.placeholder[0]) : e.item[0].parentNode
					.insertBefore(this.placeholder[0], this.direction == "down"
									? e.item[0]
									: e.item[0].nextSibling);
			this.counter = this.counter ? ++this.counter : 1;
			var a = this, c = this.counter;
			window.setTimeout(function() {
						c == a.counter && a.refreshPositions(!g)
					}, 0)
		},
		_clear : function(d, e) {
			this.reverting = false;
			var f = [];
			!this._noFinalSort && this.currentItem[0].parentNode
					&& this.placeholder.before(this.currentItem);
			this._noFinalSort = null;
			if (this.helper[0] == this.currentItem[0]) {
				for (var g in this._storedCSS)
					if (this._storedCSS[g] == "auto"
							|| this._storedCSS[g] == "static")
						this._storedCSS[g] = "";
				this.currentItem.css(this._storedCSS)
						.removeClass("ui-sortable-helper")
			} else
				this.currentItem.show();
			this.fromOutside && !e && f.push(function(a) {
						this._trigger("receive", a, this
										._uiHash(this.fromOutside))
					});
			if ((this.fromOutside
					|| this.domPosition.prev != this.currentItem.prev()
							.not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem
					.parent()[0])
					&& !e)
				f.push(function(a) {
							this._trigger("update", a, this._uiHash())
						});
			if (!b.ui.contains(this.element[0], this.currentItem[0])) {
				e || f.push(function(a) {
							this._trigger("remove", a, this._uiHash())
						});
				for (g = this.containers.length - 1; g >= 0; g--)
					if (b.ui.contains(this.containers[g].element[0],
							this.currentItem[0])
							&& !e) {
						f.push(function(a) {
									return function(c) {
										a._trigger("receive", c, this
														._uiHash(this))
									}
								}.call(this, this.containers[g]));
						f.push(function(a) {
									return function(c) {
										a._trigger("update", c, this
														._uiHash(this))
									}
								}.call(this, this.containers[g]))
					}
			}
			for (g = this.containers.length - 1; g >= 0; g--) {
				e || f.push(function(a) {
							return function(c) {
								a._trigger("deactivate", c, this._uiHash(this))
							}
						}.call(this, this.containers[g]));
				if (this.containers[g].containerCache.over) {
					f.push(function(a) {
								return function(c) {
									a._trigger("out", c, this._uiHash(this))
								}
							}.call(this, this.containers[g]));
					this.containers[g].containerCache.over = 0
				}
			}
			this._storedCursor && b("body").css("cursor", this._storedCursor);
			this._storedOpacity
					&& this.helper.css("opacity", this._storedOpacity);
			if (this._storedZIndex)
				this.helper.css("zIndex", this._storedZIndex == "auto"
								? ""
								: this._storedZIndex);
			this.dragging = false;
			if (this.cancelHelperRemoval) {
				if (!e) {
					this._trigger("beforeStop", d, this._uiHash());
					for (g = 0; g < f.length; g++)
						f[g].call(this, d);
					this._trigger("stop", d, this._uiHash())
				}
				return false
			}
			e || this._trigger("beforeStop", d, this._uiHash());
			this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
			this.helper[0] != this.currentItem[0] && this.helper.remove();
			this.helper = null;
			if (!e) {
				for (g = 0; g < f.length; g++)
					f[g].call(this, d);
				this._trigger("stop", d, this._uiHash())
			}
			this.fromOutside = false;
			return true
		},
		_trigger : function() {
			b.Widget.prototype._trigger.apply(this, arguments) === false
					&& this.cancel()
		},
		_uiHash : function(d) {
			var e = d || this;
			return {
				helper : e.helper,
				placeholder : e.placeholder || b([]),
				position : e.position,
				originalPosition : e.originalPosition,
				offset : e.positionAbs,
				item : e.currentItem,
				sender : d ? d.element : null
			}
		}
	});
	b.extend(b.ui.sortable, {
				version : "1.8.12"
			})
})(jQuery);
jQuery.effects || function(b, d) {
	function e(l) {
		var k;
		if (l && l.constructor == Array && l.length == 3)
			return l;
		if (k = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/
				.exec(l))
			return [parseInt(k[1], 10), parseInt(k[2], 10), parseInt(k[3], 10)];
		if (k = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/
				.exec(l))
			return [parseFloat(k[1]) * 2.55, parseFloat(k[2]) * 2.55,
					parseFloat(k[3]) * 2.55];
		if (k = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(l))
			return [parseInt(k[1], 16), parseInt(k[2], 16), parseInt(k[3], 16)];
		if (k = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(l))
			return [parseInt(k[1] + k[1], 16), parseInt(k[2] + k[2], 16),
					parseInt(k[3] + k[3], 16)];
		if (/rgba\(0, 0, 0, 0\)/.exec(l))
			return j.transparent;
		return j[b.trim(l).toLowerCase()]
	}
	function f(l, k) {
		var m;
		do {
			m = b.curCSS(l, k);
			if (m != "" && m != "transparent" || b.nodeName(l, "body"))
				break;
			k = "backgroundColor"
		} while (l = l.parentNode);
		return e(m)
	}
	function g() {
		var l = document.defaultView ? document.defaultView.getComputedStyle(
				this, null) : this.currentStyle, k = {}, m, p;
		if (l && l.length && l[0] && l[l[0]])
			for (var q = l.length; q--;) {
				m = l[q];
				if (typeof l[m] == "string") {
					p = m.replace(/\-(\w)/g, function(s, r) {
								return r.toUpperCase()
							});
					k[p] = l[m]
				}
			}
		else
			for (m in l)
				if (typeof l[m] === "string")
					k[m] = l[m];
		return k
	}
	function a(l) {
		var k, m;
		for (k in l) {
			m = l[k];
			if (m == null || b.isFunction(m) || k in o || /scrollbar/.test(k)
					|| !/color/i.test(k) && isNaN(parseFloat(m)))
				delete l[k]
		}
		return l
	}
	function c(l, k) {
		var m = {
			_ : 0
		}, p;
		for (p in k)
			if (l[p] != k[p])
				m[p] = k[p];
		return m
	}
	function h(l, k, m, p) {
		if (typeof l == "object") {
			p = k;
			m = null;
			k = l;
			l = k.effect
		}
		if (b.isFunction(k)) {
			p = k;
			m = null;
			k = {}
		}
		if (typeof k == "number" || b.fx.speeds[k]) {
			p = m;
			m = k;
			k = {}
		}
		if (b.isFunction(m)) {
			p = m;
			m = null
		}
		k = k || {};
		m = m || k.duration;
		m = b.fx.off ? 0 : typeof m == "number" ? m : m in b.fx.speeds
				? b.fx.speeds[m]
				: b.fx.speeds._default;
		p = p || k.complete;
		return [l, k, m, p]
	}
	function i(l) {
		if (!l || typeof l === "number" || b.fx.speeds[l])
			return true;
		if (typeof l === "string" && !b.effects[l])
			return true;
		return false
	}
	b.effects = {};
	b.each(	["backgroundColor", "borderBottomColor", "borderLeftColor",
					"borderRightColor", "borderTopColor", "borderColor",
					"color", "outlineColor"], function(l, k) {
				b.fx.step[k] = function(m) {
					if (!m.colorInit) {
						m.start = f(m.elem, k);
						m.end = e(m.end);
						m.colorInit = true
					}
					m.elem.style[k] = "rgb("
							+ Math
									.max(
											Math
													.min(
															parseInt(
																	m.pos
																			* (m.end[0] - m.start[0])
																			+ m.start[0],
																	10), 255),
											0)
							+ ","
							+ Math
									.max(
											Math
													.min(
															parseInt(
																	m.pos
																			* (m.end[1] - m.start[1])
																			+ m.start[1],
																	10), 255),
											0)
							+ ","
							+ Math
									.max(
											Math
													.min(
															parseInt(
																	m.pos
																			* (m.end[2] - m.start[2])
																			+ m.start[2],
																	10), 255),
											0) + ")"
				}
			});
	var j = {
		aqua : [0, 255, 255],
		azure : [240, 255, 255],
		beige : [245, 245, 220],
		black : [0, 0, 0],
		blue : [0, 0, 255],
		brown : [165, 42, 42],
		cyan : [0, 255, 255],
		darkblue : [0, 0, 139],
		darkcyan : [0, 139, 139],
		darkgrey : [169, 169, 169],
		darkgreen : [0, 100, 0],
		darkkhaki : [189, 183, 107],
		darkmagenta : [139, 0, 139],
		darkolivegreen : [85, 107, 47],
		darkorange : [255, 140, 0],
		darkorchid : [153, 50, 204],
		darkred : [139, 0, 0],
		darksalmon : [233, 150, 122],
		darkviolet : [148, 0, 211],
		fuchsia : [255, 0, 255],
		gold : [255, 215, 0],
		green : [0, 128, 0],
		indigo : [75, 0, 130],
		khaki : [240, 230, 140],
		lightblue : [173, 216, 230],
		lightcyan : [224, 255, 255],
		lightgreen : [144, 238, 144],
		lightgrey : [211, 211, 211],
		lightpink : [255, 182, 193],
		lightyellow : [255, 255, 224],
		lime : [0, 255, 0],
		magenta : [255, 0, 255],
		maroon : [128, 0, 0],
		navy : [0, 0, 128],
		olive : [128, 128, 0],
		orange : [255, 165, 0],
		pink : [255, 192, 203],
		purple : [128, 0, 128],
		violet : [128, 0, 128],
		red : [255, 0, 0],
		silver : [192, 192, 192],
		white : [255, 255, 255],
		yellow : [255, 255, 0],
		transparent : [255, 255, 255]
	}, n = ["add", "remove", "toggle"], o = {
		border : 1,
		borderBottom : 1,
		borderColor : 1,
		borderLeft : 1,
		borderRight : 1,
		borderTop : 1,
		borderWidth : 1,
		margin : 1,
		padding : 1
	};
	b.effects.animateClass = function(l, k, m, p) {
		if (b.isFunction(m)) {
			p = m;
			m = null
		}
		return this.queue("fx", function() {
			var q = b(this), s = q.attr("style") || " ", r = a(g.call(this)), u, v = q
					.attr("className");
			b.each(n, function(w, y) {
						l[y] && q[y + "Class"](l[y])
					});
			u = a(g.call(this));
			q.attr("className", v);
			q.animate(c(r, u), k, m, function() {
						b.each(n, function(w, y) {
									l[y] && q[y + "Class"](l[y])
								});
						if (typeof q.attr("style") == "object") {
							q.attr("style").cssText = "";
							q.attr("style").cssText = s
						} else
							q.attr("style", s);
						p && p.apply(this, arguments)
					});
			r = b.queue(this);
			u = r.splice(r.length - 1, 1)[0];
			r.splice(1, 0, u);
			b.dequeue(this)
		})
	};
	b.fn.extend({
				_addClass : b.fn.addClass,
				addClass : function(l, k, m, p) {
					return k ? b.effects.animateClass.apply(this, [{
										add : l
									}, k, m, p]) : this._addClass(l)
				},
				_removeClass : b.fn.removeClass,
				removeClass : function(l, k, m, p) {
					return k ? b.effects.animateClass.apply(this, [{
										remove : l
									}, k, m, p]) : this._removeClass(l)
				},
				_toggleClass : b.fn.toggleClass,
				toggleClass : function(l, k, m, p, q) {
					return typeof k == "boolean" || k === d ? m
							? b.effects.animateClass.apply(this, [k ? {
												add : l
											} : {
												remove : l
											}, m, p, q])
							: this._toggleClass(l, k) : b.effects.animateClass
							.apply(this, [{
												toggle : l
											}, k, m, p])
				},
				switchClass : function(l, k, m, p, q) {
					return b.effects.animateClass.apply(this, [{
										add : k,
										remove : l
									}, m, p, q])
				}
			});
	b.extend(b.effects, {
				version : "1.8.12",
				save : function(l, k) {
					for (var m = 0; m < k.length; m++)
						k[m] !== null
								&& l.data("ec.storage." + k[m],
										l[0].style[k[m]])
				},
				restore : function(l, k) {
					for (var m = 0; m < k.length; m++)
						k[m] !== null
								&& l.css(k[m], l.data("ec.storage." + k[m]))
				},
				setMode : function(l, k) {
					if (k == "toggle")
						k = l.is(":hidden") ? "show" : "hide";
					return k
				},
				getBaseline : function(l, k) {
					var m;
					switch (l[0]) {
						case "top" :
							m = 0;
							break;
						case "middle" :
							m = 0.5;
							break;
						case "bottom" :
							m = 1;
							break;
						default :
							m = l[0] / k.height
					}
					switch (l[1]) {
						case "left" :
							l = 0;
							break;
						case "center" :
							l = 0.5;
							break;
						case "right" :
							l = 1;
							break;
						default :
							l = l[1] / k.width
					}
					return {
						x : l,
						y : m
					}
				},
				createWrapper : function(l) {
					if (l.parent().is(".ui-effects-wrapper"))
						return l.parent();
					var k = {
						width : l.outerWidth(true),
						height : l.outerHeight(true),
						"float" : l.css("float")
					}, m = b("<div></div>").addClass("ui-effects-wrapper").css(
							{
								fontSize : "100%",
								background : "transparent",
								border : "none",
								margin : 0,
								padding : 0
							});
					l.wrap(m);
					m = l.parent();
					if (l.css("position") == "static") {
						m.css({
									position : "relative"
								});
						l.css({
									position : "relative"
								})
					} else {
						b.extend(k, {
									position : l.css("position"),
									zIndex : l.css("z-index")
								});
						b.each(["top", "left", "bottom", "right"], function(p,
										q) {
									k[q] = l.css(q);
									if (isNaN(parseInt(k[q], 10)))
										k[q] = "auto"
								});
						l.css({
									position : "relative",
									top : 0,
									left : 0,
									right : "auto",
									bottom : "auto"
								})
					}
					return m.css(k).show()
				},
				removeWrapper : function(l) {
					if (l.parent().is(".ui-effects-wrapper"))
						return l.parent().replaceWith(l);
					return l
				},
				setTransition : function(l, k, m, p) {
					p = p || {};
					b.each(k, function(q, s) {
								unit = l.cssUnit(s);
								if (unit[0] > 0)
									p[s] = unit[0] * m + unit[1]
							});
					return p
				}
			});
	b.fn.extend({
				effect : function(l) {
					var k = h.apply(this, arguments), m = {
						options : k[1],
						duration : k[2],
						callback : k[3]
					};
					k = m.options.mode;
					var p = b.effects[l];
					if (b.fx.off || !p)
						return k ? this[k](m.duration, m.callback) : this.each(
								function() {
									m.callback && m.callback.call(this)
								});
					return p.call(this, m)
				},
				_show : b.fn.show,
				show : function(l) {
					if (i(l))
						return this._show.apply(this, arguments);
					else {
						var k = h.apply(this, arguments);
						k[1].mode = "show";
						return this.effect.apply(this, k)
					}
				},
				_hide : b.fn.hide,
				hide : function(l) {
					if (i(l))
						return this._hide.apply(this, arguments);
					else {
						var k = h.apply(this, arguments);
						k[1].mode = "hide";
						return this.effect.apply(this, k)
					}
				},
				__toggle : b.fn.toggle,
				toggle : function(l) {
					if (i(l) || typeof l === "boolean" || b.isFunction(l))
						return this.__toggle.apply(this, arguments);
					else {
						var k = h.apply(this, arguments);
						k[1].mode = "toggle";
						return this.effect.apply(this, k)
					}
				},
				cssUnit : function(l) {
					var k = this.css(l), m = [];
					b.each(["em", "px", "%", "pt"], function(p, q) {
								if (k.indexOf(q) > 0)
									m = [parseFloat(k), q]
							});
					return m
				}
			});
	b.easing.jswing = b.easing.swing;
	b.extend(b.easing, {
				def : "easeOutQuad",
				swing : function(l, k, m, p, q) {
					return b.easing[b.easing.def](l, k, m, p, q)
				},
				easeInQuad : function(l, k, m, p, q) {
					return p * (k /= q) * k + m
				},
				easeOutQuad : function(l, k, m, p, q) {
					return -p * (k /= q) * (k - 2) + m
				},
				easeInOutQuad : function(l, k, m, p, q) {
					if ((k /= q / 2) < 1)
						return p / 2 * k * k + m;
					return -p / 2 * (--k * (k - 2) - 1) + m
				},
				easeInCubic : function(l, k, m, p, q) {
					return p * (k /= q) * k * k + m
				},
				easeOutCubic : function(l, k, m, p, q) {
					return p * ((k = k / q - 1) * k * k + 1) + m
				},
				easeInOutCubic : function(l, k, m, p, q) {
					if ((k /= q / 2) < 1)
						return p / 2 * k * k * k + m;
					return p / 2 * ((k -= 2) * k * k + 2) + m
				},
				easeInQuart : function(l, k, m, p, q) {
					return p * (k /= q) * k * k * k + m
				},
				easeOutQuart : function(l, k, m, p, q) {
					return -p * ((k = k / q - 1) * k * k * k - 1) + m
				},
				easeInOutQuart : function(l, k, m, p, q) {
					if ((k /= q / 2) < 1)
						return p / 2 * k * k * k * k + m;
					return -p / 2 * ((k -= 2) * k * k * k - 2) + m
				},
				easeInQuint : function(l, k, m, p, q) {
					return p * (k /= q) * k * k * k * k + m
				},
				easeOutQuint : function(l, k, m, p, q) {
					return p * ((k = k / q - 1) * k * k * k * k + 1) + m
				},
				easeInOutQuint : function(l, k, m, p, q) {
					if ((k /= q / 2) < 1)
						return p / 2 * k * k * k * k * k + m;
					return p / 2 * ((k -= 2) * k * k * k * k + 2) + m
				},
				easeInSine : function(l, k, m, p, q) {
					return -p * Math.cos(k / q * (Math.PI / 2)) + p + m
				},
				easeOutSine : function(l, k, m, p, q) {
					return p * Math.sin(k / q * (Math.PI / 2)) + m
				},
				easeInOutSine : function(l, k, m, p, q) {
					return -p / 2 * (Math.cos(Math.PI * k / q) - 1) + m
				},
				easeInExpo : function(l, k, m, p, q) {
					return k == 0 ? m : p * Math.pow(2, 10 * (k / q - 1)) + m
				},
				easeOutExpo : function(l, k, m, p, q) {
					return k == q ? m + p : p * (-Math.pow(2, -10 * k / q) + 1)
							+ m
				},
				easeInOutExpo : function(l, k, m, p, q) {
					if (k == 0)
						return m;
					if (k == q)
						return m + p;
					if ((k /= q / 2) < 1)
						return p / 2 * Math.pow(2, 10 * (k - 1)) + m;
					return p / 2 * (-Math.pow(2, -10 * --k) + 2) + m
				},
				easeInCirc : function(l, k, m, p, q) {
					return -p * (Math.sqrt(1 - (k /= q) * k) - 1) + m
				},
				easeOutCirc : function(l, k, m, p, q) {
					return p * Math.sqrt(1 - (k = k / q - 1) * k) + m
				},
				easeInOutCirc : function(l, k, m, p, q) {
					if ((k /= q / 2) < 1)
						return -p / 2 * (Math.sqrt(1 - k * k) - 1) + m;
					return p / 2 * (Math.sqrt(1 - (k -= 2) * k) + 1) + m
				},
				easeInElastic : function(l, k, m, p, q) {
					l = 1.70158;
					var s = 0, r = p;
					if (k == 0)
						return m;
					if ((k /= q) == 1)
						return m + p;
					s || (s = q * 0.3);
					if (r < Math.abs(p)) {
						r = p;
						l = s / 4
					} else
						l = s / (2 * Math.PI) * Math.asin(p / r);
					return -(r * Math.pow(2, 10 * (k -= 1)) * Math
							.sin((k * q - l) * 2 * Math.PI / s))
							+ m
				},
				easeOutElastic : function(l, k, m, p, q) {
					l = 1.70158;
					var s = 0, r = p;
					if (k == 0)
						return m;
					if ((k /= q) == 1)
						return m + p;
					s || (s = q * 0.3);
					if (r < Math.abs(p)) {
						r = p;
						l = s / 4
					} else
						l = s / (2 * Math.PI) * Math.asin(p / r);
					return r * Math.pow(2, -10 * k)
							* Math.sin((k * q - l) * 2 * Math.PI / s) + p + m
				},
				easeInOutElastic : function(l, k, m, p, q) {
					l = 1.70158;
					var s = 0, r = p;
					if (k == 0)
						return m;
					if ((k /= q / 2) == 2)
						return m + p;
					s || (s = q * 0.3 * 1.5);
					if (r < Math.abs(p)) {
						r = p;
						l = s / 4
					} else
						l = s / (2 * Math.PI) * Math.asin(p / r);
					if (k < 1)
						return -0.5 * r * Math.pow(2, 10 * (k -= 1))
								* Math.sin((k * q - l) * 2 * Math.PI / s) + m;
					return r * Math.pow(2, -10 * (k -= 1))
							* Math.sin((k * q - l) * 2 * Math.PI / s) * 0.5 + p
							+ m
				},
				easeInBack : function(l, k, m, p, q, s) {
					if (s == d)
						s = 1.70158;
					return p * (k /= q) * k * ((s + 1) * k - s) + m
				},
				easeOutBack : function(l, k, m, p, q, s) {
					if (s == d)
						s = 1.70158;
					return p * ((k = k / q - 1) * k * ((s + 1) * k + s) + 1)
							+ m
				},
				easeInOutBack : function(l, k, m, p, q, s) {
					if (s == d)
						s = 1.70158;
					if ((k /= q / 2) < 1)
						return p / 2 * k * k * (((s *= 1.525) + 1) * k - s) + m;
					return p / 2
							* ((k -= 2) * k * (((s *= 1.525) + 1) * k + s) + 2)
							+ m
				},
				easeInBounce : function(l, k, m, p, q) {
					return p - b.easing.easeOutBounce(l, q - k, 0, p, q) + m
				},
				easeOutBounce : function(l, k, m, p, q) {
					return (k /= q) < 1 / 2.75
							? p * 7.5625 * k * k + m
							: k < 2 / 2.75
									? p
											* (7.5625 * (k -= 1.5 / 2.75) * k + 0.75)
											+ m
									: k < 2.5 / 2.75
											? p
													* (7.5625
															* (k -= 2.25 / 2.75)
															* k + 0.9375) + m
											: p
													* (7.5625
															* (k -= 2.625
																	/ 2.75) * k + 0.984375)
													+ m
				},
				easeInOutBounce : function(l, k, m, p, q) {
					if (k < q / 2)
						return b.easing.easeInBounce(l, k * 2, 0, p, q) * 0.5
								+ m;
					return b.easing.easeOutBounce(l, k * 2 - q, 0, p, q) * 0.5
							+ p * 0.5 + m
				}
			})
}(jQuery);
(function(b) {
	b.effects.blind = function(d) {
		return this.queue(function() {
			var e = b(this), f = ["position", "top", "bottom", "left", "right"], g = b.effects
					.setMode(e, d.options.mode || "hide"), a = d.options.direction
					|| "vertical";
			b.effects.save(e, f);
			e.show();
			var c = b.effects.createWrapper(e).css({
						overflow : "hidden"
					}), h = a == "vertical" ? "height" : "width";
			a = a == "vertical" ? c.height() : c.width();
			g == "show" && c.css(h, 0);
			var i = {};
			i[h] = g == "show" ? a : 0;
			c.animate(i, d.duration, d.options.easing, function() {
						g == "hide" && e.hide();
						b.effects.restore(e, f);
						b.effects.removeWrapper(e);
						d.callback && d.callback.apply(e[0], arguments);
						e.dequeue()
					})
		})
	}
})(jQuery);
(function(b) {
	b.effects.bounce = function(d) {
		return this.queue(function() {
			var e = b(this), f = ["position", "top", "bottom", "left", "right"], g = b.effects
					.setMode(e, d.options.mode || "effect"), a = d.options.direction
					|| "up", c = d.options.distance || 20, h = d.options.times
					|| 5, i = d.duration || 250;
			/show|hide/.test(g) && f.push("opacity");
			b.effects.save(e, f);
			e.show();
			b.effects.createWrapper(e);
			var j = a == "up" || a == "down" ? "top" : "left";
			a = a == "up" || a == "left" ? "pos" : "neg";
			c = d.options.distance || (j == "top" ? e.outerHeight({
						margin : true
					}) / 3 : e.outerWidth({
						margin : true
					}) / 3);
			if (g == "show")
				e.css("opacity", 0).css(j, a == "pos" ? -c : c);
			if (g == "hide")
				c /= h * 2;
			g != "hide" && h--;
			if (g == "show") {
				var n = {
					opacity : 1
				};
				n[j] = (a == "pos" ? "+=" : "-=") + c;
				e.animate(n, i / 2, d.options.easing);
				c /= 2;
				h--
			}
			for (n = 0; n < h; n++) {
				var o = {}, l = {};
				o[j] = (a == "pos" ? "-=" : "+=") + c;
				l[j] = (a == "pos" ? "+=" : "-=") + c;
				e.animate(o, i / 2, d.options.easing).animate(l, i / 2,
						d.options.easing);
				c = g == "hide" ? c * 2 : c / 2
			}
			if (g == "hide") {
				n = {
					opacity : 0
				};
				n[j] = (a == "pos" ? "-=" : "+=") + c;
				e.animate(n, i / 2, d.options.easing, function() {
							e.hide();
							b.effects.restore(e, f);
							b.effects.removeWrapper(e);
							d.callback && d.callback.apply(this, arguments)
						})
			} else {
				o = {};
				l = {};
				o[j] = (a == "pos" ? "-=" : "+=") + c;
				l[j] = (a == "pos" ? "+=" : "-=") + c;
				e.animate(o, i / 2, d.options.easing).animate(l, i / 2,
						d.options.easing, function() {
							b.effects.restore(e, f);
							b.effects.removeWrapper(e);
							d.callback && d.callback.apply(this, arguments)
						})
			}
			e.queue("fx", function() {
						e.dequeue()
					});
			e.dequeue()
		})
	}
})(jQuery);
(function(b) {
	b.effects.clip = function(d) {
		return this.queue(function() {
					var e = b(this), f = ["position", "top", "bottom", "left",
							"right", "height", "width"], g = b.effects.setMode(
							e, d.options.mode || "hide"), a = d.options.direction
							|| "vertical";
					b.effects.save(e, f);
					e.show();
					var c = b.effects.createWrapper(e).css({
								overflow : "hidden"
							});
					c = e[0].tagName == "IMG" ? c : e;
					var h = {
						size : a == "vertical" ? "height" : "width",
						position : a == "vertical" ? "top" : "left"
					};
					a = a == "vertical" ? c.height() : c.width();
					if (g == "show") {
						c.css(h.size, 0);
						c.css(h.position, a / 2)
					}
					var i = {};
					i[h.size] = g == "show" ? a : 0;
					i[h.position] = g == "show" ? 0 : a / 2;
					c.animate(i, {
								queue : false,
								duration : d.duration,
								easing : d.options.easing,
								complete : function() {
									g == "hide" && e.hide();
									b.effects.restore(e, f);
									b.effects.removeWrapper(e);
									d.callback
											&& d.callback
													.apply(e[0], arguments);
									e.dequeue()
								}
							})
				})
	}
})(jQuery);
(function(b) {
	b.effects.drop = function(d) {
		return this.queue(function() {
					var e = b(this), f = ["position", "top", "bottom", "left",
							"right", "opacity"], g = b.effects.setMode(e,
							d.options.mode || "hide"), a = d.options.direction
							|| "left";
					b.effects.save(e, f);
					e.show();
					b.effects.createWrapper(e);
					var c = a == "up" || a == "down" ? "top" : "left";
					a = a == "up" || a == "left" ? "pos" : "neg";
					var h = d.options.distance || (c == "top" ? e.outerHeight({
								margin : true
							}) / 2 : e.outerWidth({
								margin : true
							}) / 2);
					if (g == "show")
						e.css("opacity", 0).css(c, a == "pos" ? -h : h);
					var i = {
						opacity : g == "show" ? 1 : 0
					};
					i[c] = (g == "show" ? a == "pos" ? "+=" : "-=" : a == "pos"
							? "-="
							: "+=")
							+ h;
					e.animate(i, {
								queue : false,
								duration : d.duration,
								easing : d.options.easing,
								complete : function() {
									g == "hide" && e.hide();
									b.effects.restore(e, f);
									b.effects.removeWrapper(e);
									d.callback
											&& d.callback
													.apply(this, arguments);
									e.dequeue()
								}
							})
				})
	}
})(jQuery);
(function(b) {
	b.effects.explode = function(d) {
		return this.queue(function() {
			var e = d.options.pieces
					? Math.round(Math.sqrt(d.options.pieces))
					: 3, f = d.options.pieces ? Math.round(Math
					.sqrt(d.options.pieces)) : 3;
			d.options.mode = d.options.mode == "toggle" ? b(this)
					.is(":visible") ? "hide" : "show" : d.options.mode;
			var g = b(this).show().css("visibility", "hidden"), a = g.offset();
			a.top -= parseInt(g.css("marginTop"), 10) || 0;
			a.left -= parseInt(g.css("marginLeft"), 10) || 0;
			for (var c = g.outerWidth(true), h = g.outerHeight(true), i = 0; i < e; i++)
				for (var j = 0; j < f; j++)
					g.clone().appendTo("body").wrap("<div></div>").css({
								position : "absolute",
								visibility : "visible",
								left : -j * (c / f),
								top : -i * (h / e)
							}).parent().addClass("ui-effects-explode").css({
						position : "absolute",
						overflow : "hidden",
						width : c / f,
						height : h / e,
						left : a.left
								+ j
								* (c / f)
								+ (d.options.mode == "show" ? (j - Math.floor(f
										/ 2))
										* (c / f) : 0),
						top : a.top
								+ i
								* (h / e)
								+ (d.options.mode == "show" ? (i - Math.floor(e
										/ 2))
										* (h / e) : 0),
						opacity : d.options.mode == "show" ? 0 : 1
					}).animate({
						left : a.left
								+ j
								* (c / f)
								+ (d.options.mode == "show" ? 0 : (j - Math
										.floor(f / 2))
										* (c / f)),
						top : a.top
								+ i
								* (h / e)
								+ (d.options.mode == "show" ? 0 : (i - Math
										.floor(e / 2))
										* (h / e)),
						opacity : d.options.mode == "show" ? 1 : 0
					}, d.duration || 500);
			setTimeout(function() {
						d.options.mode == "show" ? g.css({
									visibility : "visible"
								}) : g.css({
									visibility : "visible"
								}).hide();
						d.callback && d.callback.apply(g[0]);
						g.dequeue();
						b("div.ui-effects-explode").remove()
					}, d.duration || 500)
		})
	}
})(jQuery);
(function(b) {
	b.effects.fade = function(d) {
		return this.queue(function() {
			var e = b(this), f = b.effects.setMode(e, d.options.mode || "hide");
			e.animate({
						opacity : f
					}, {
						queue : false,
						duration : d.duration,
						easing : d.options.easing,
						complete : function() {
							d.callback && d.callback.apply(this, arguments);
							e.dequeue()
						}
					})
		})
	}
})(jQuery);
(function(b) {
	b.effects.fold = function(d) {
		return this.queue(function() {
			var e = b(this), f = ["position", "top", "bottom", "left", "right"], g = b.effects
					.setMode(e, d.options.mode || "hide"), a = d.options.size
					|| 15, c = !!d.options.horizFirst, h = d.duration
					? d.duration / 2
					: b.fx.speeds._default / 2;
			b.effects.save(e, f);
			e.show();
			var i = b.effects.createWrapper(e).css({
						overflow : "hidden"
					}), j = g == "show" != c, n = j ? ["width", "height"] : [
					"height", "width"];
			j = j ? [i.width(), i.height()] : [i.height(), i.width()];
			var o = /([0-9]+)%/.exec(a);
			if (o)
				a = parseInt(o[1], 10) / 100 * j[g == "hide" ? 0 : 1];
			if (g == "show")
				i.css(c ? {
					height : 0,
					width : a
				} : {
					height : a,
					width : 0
				});
			c = {};
			o = {};
			c[n[0]] = g == "show" ? j[0] : a;
			o[n[1]] = g == "show" ? j[1] : 0;
			i.animate(c, h, d.options.easing).animate(o, h, d.options.easing,
					function() {
						g == "hide" && e.hide();
						b.effects.restore(e, f);
						b.effects.removeWrapper(e);
						d.callback && d.callback.apply(e[0], arguments);
						e.dequeue()
					})
		})
	}
})(jQuery);
(function(b) {
	b.effects.highlight = function(d) {
		return this.queue(function() {
					var e = b(this), f = ["backgroundImage", "backgroundColor",
							"opacity"], g = b.effects.setMode(e, d.options.mode
									|| "show"), a = {
						backgroundColor : e.css("backgroundColor")
					};
					if (g == "hide")
						a.opacity = 0;
					b.effects.save(e, f);
					e.show().css({
								backgroundImage : "none",
								backgroundColor : d.options.color || "#ffff99"
							}).animate(a, {
						queue : false,
						duration : d.duration,
						easing : d.options.easing,
						complete : function() {
							g == "hide" && e.hide();
							b.effects.restore(e, f);
							g == "show" && !b.support.opacity
									&& this.style.removeAttribute("filter");
							d.callback && d.callback.apply(this, arguments);
							e.dequeue()
						}
					})
				})
	}
})(jQuery);
(function(b) {
	b.effects.pulsate = function(d) {
		return this.queue(function() {
			var e = b(this), f = b.effects.setMode(e, d.options.mode || "show");
			times = (d.options.times || 5) * 2 - 1;
			duration = d.duration ? d.duration / 2 : b.fx.speeds._default / 2;
			isVisible = e.is(":visible");
			animateTo = 0;
			if (!isVisible) {
				e.css("opacity", 0).show();
				animateTo = 1
			}
			if (f == "hide" && isVisible || f == "show" && !isVisible)
				times--;
			for (f = 0; f < times; f++) {
				e.animate({
							opacity : animateTo
						}, duration, d.options.easing);
				animateTo = (animateTo + 1) % 2
			}
			e.animate({
						opacity : animateTo
					}, duration, d.options.easing, function() {
						animateTo == 0 && e.hide();
						d.callback && d.callback.apply(this, arguments)
					});
			e.queue("fx", function() {
						e.dequeue()
					}).dequeue()
		})
	}
})(jQuery);
(function(b) {
	b.effects.puff = function(d) {
		return this.queue(function() {
			var e = b(this), f = b.effects.setMode(e, d.options.mode || "hide"), g = parseInt(
					d.options.percent, 10)
					|| 150, a = g / 100, c = {
				height : e.height(),
				width : e.width()
			};
			b.extend(d.options, {
						fade : true,
						mode : f,
						percent : f == "hide" ? g : 100,
						from : f == "hide" ? c : {
							height : c.height * a,
							width : c.width * a
						}
					});
			e.effect("scale", d.options, d.duration, d.callback);
			e.dequeue()
		})
	};
	b.effects.scale = function(d) {
		return this.queue(function() {
			var e = b(this), f = b.extend(true, {}, d.options), g = b.effects
					.setMode(e, d.options.mode || "effect"), a = parseInt(
					d.options.percent, 10)
					|| (parseInt(d.options.percent, 10) == 0 ? 0 : g == "hide"
							? 0
							: 100), c = d.options.direction || "both", h = d.options.origin;
			if (g != "effect") {
				f.origin = h || ["middle", "center"];
				f.restore = true
			}
			h = {
				height : e.height(),
				width : e.width()
			};
			e.from = d.options.from || (g == "show" ? {
				height : 0,
				width : 0
			} : h);
			a = {
				y : c != "horizontal" ? a / 100 : 1,
				x : c != "vertical" ? a / 100 : 1
			};
			e.to = {
				height : h.height * a.y,
				width : h.width * a.x
			};
			if (d.options.fade) {
				if (g == "show") {
					e.from.opacity = 0;
					e.to.opacity = 1
				}
				if (g == "hide") {
					e.from.opacity = 1;
					e.to.opacity = 0
				}
			}
			f.from = e.from;
			f.to = e.to;
			f.mode = g;
			e.effect("size", f, d.duration, d.callback);
			e.dequeue()
		})
	};
	b.effects.size = function(d) {
		return this.queue(function() {
			var e = b(this), f = ["position", "top", "bottom", "left", "right",
					"width", "height", "overflow", "opacity"], g = ["position",
					"top", "bottom", "left", "right", "overflow", "opacity"], a = [
					"width", "height", "overflow"], c = ["fontSize"], h = [
					"borderTopWidth", "borderBottomWidth", "paddingTop",
					"paddingBottom"], i = ["borderLeftWidth",
					"borderRightWidth", "paddingLeft", "paddingRight"], j = b.effects
					.setMode(e, d.options.mode || "effect"), n = d.options.restore || false, o = d.options.scale
					|| "both", l = d.options.origin, k = {
				height : e.height(),
				width : e.width()
			};
			e.from = d.options.from || k;
			e.to = d.options.to || k;
			if (l) {
				l = b.effects.getBaseline(l, k);
				e.from.top = (k.height - e.from.height) * l.y;
				e.from.left = (k.width - e.from.width) * l.x;
				e.to.top = (k.height - e.to.height) * l.y;
				e.to.left = (k.width - e.to.width) * l.x
			}
			var m = {
				from : {
					y : e.from.height / k.height,
					x : e.from.width / k.width
				},
				to : {
					y : e.to.height / k.height,
					x : e.to.width / k.width
				}
			};
			if (o == "box" || o == "both") {
				if (m.from.y != m.to.y) {
					f = f.concat(h);
					e.from = b.effects.setTransition(e, h, m.from.y, e.from);
					e.to = b.effects.setTransition(e, h, m.to.y, e.to)
				}
				if (m.from.x != m.to.x) {
					f = f.concat(i);
					e.from = b.effects.setTransition(e, i, m.from.x, e.from);
					e.to = b.effects.setTransition(e, i, m.to.x, e.to)
				}
			}
			if (o == "content" || o == "both")
				if (m.from.y != m.to.y) {
					f = f.concat(c);
					e.from = b.effects.setTransition(e, c, m.from.y, e.from);
					e.to = b.effects.setTransition(e, c, m.to.y, e.to)
				}
			b.effects.save(e, n ? f : g);
			e.show();
			b.effects.createWrapper(e);
			e.css("overflow", "hidden").css(e.from);
			if (o == "content" || o == "both") {
				h = h.concat(["marginTop", "marginBottom"]).concat(c);
				i = i.concat(["marginLeft", "marginRight"]);
				a = f.concat(h).concat(i);
				e.find("*[width]").each(function() {
					child = b(this);
					n && b.effects.save(child, a);
					var p = {
						height : child.height(),
						width : child.width()
					};
					child.from = {
						height : p.height * m.from.y,
						width : p.width * m.from.x
					};
					child.to = {
						height : p.height * m.to.y,
						width : p.width * m.to.x
					};
					if (m.from.y != m.to.y) {
						child.from = b.effects.setTransition(child, h,
								m.from.y, child.from);
						child.to = b.effects.setTransition(child, h, m.to.y,
								child.to)
					}
					if (m.from.x != m.to.x) {
						child.from = b.effects.setTransition(child, i,
								m.from.x, child.from);
						child.to = b.effects.setTransition(child, i, m.to.x,
								child.to)
					}
					child.css(child.from);
					child.animate(child.to, d.duration, d.options.easing,
							function() {
								n && b.effects.restore(child, a)
							})
				})
			}
			e.animate(e.to, {
						queue : false,
						duration : d.duration,
						easing : d.options.easing,
						complete : function() {
							e.to.opacity === 0
									&& e.css("opacity", e.from.opacity);
							j == "hide" && e.hide();
							b.effects.restore(e, n ? f : g);
							b.effects.removeWrapper(e);
							d.callback && d.callback.apply(this, arguments);
							e.dequeue()
						}
					})
		})
	}
})(jQuery);
(function(b) {
	b.effects.shake = function(d) {
		return this.queue(function() {
			var e = b(this), f = ["position", "top", "bottom", "left", "right"];
			b.effects.setMode(e, d.options.mode || "effect");
			var g = d.options.direction || "left", a = d.options.distance || 20, c = d.options.times
					|| 3, h = d.duration || d.options.duration || 140;
			b.effects.save(e, f);
			e.show();
			b.effects.createWrapper(e);
			var i = g == "up" || g == "down" ? "top" : "left", j = g == "up"
					|| g == "left" ? "pos" : "neg";
			g = {};
			var n = {}, o = {};
			g[i] = (j == "pos" ? "-=" : "+=") + a;
			n[i] = (j == "pos" ? "+=" : "-=") + a * 2;
			o[i] = (j == "pos" ? "-=" : "+=") + a * 2;
			e.animate(g, h, d.options.easing);
			for (a = 1; a < c; a++)
				e.animate(n, h, d.options.easing).animate(o, h,
						d.options.easing);
			e.animate(n, h, d.options.easing).animate(g, h / 2,
					d.options.easing, function() {
						b.effects.restore(e, f);
						b.effects.removeWrapper(e);
						d.callback && d.callback.apply(this, arguments)
					});
			e.queue("fx", function() {
						e.dequeue()
					});
			e.dequeue()
		})
	}
})(jQuery);
(function(b) {
	b.effects.slide = function(d) {
		return this.queue(function() {
			var e = b(this), f = ["position", "top", "bottom", "left", "right"], g = b.effects
					.setMode(e, d.options.mode || "show"), a = d.options.direction
					|| "left";
			b.effects.save(e, f);
			e.show();
			b.effects.createWrapper(e).css({
						overflow : "hidden"
					});
			var c = a == "up" || a == "down" ? "top" : "left";
			a = a == "up" || a == "left" ? "pos" : "neg";
			var h = d.options.distance || (c == "top" ? e.outerHeight({
						margin : true
					}) : e.outerWidth({
						margin : true
					}));
			if (g == "show")
				e.css(c, a == "pos" ? isNaN(h) ? "-" + h : -h : h);
			var i = {};
			i[c] = (g == "show" ? a == "pos" ? "+=" : "-=" : a == "pos"
					? "-="
					: "+=")
					+ h;
			e.animate(i, {
						queue : false,
						duration : d.duration,
						easing : d.options.easing,
						complete : function() {
							g == "hide" && e.hide();
							b.effects.restore(e, f);
							b.effects.removeWrapper(e);
							d.callback && d.callback.apply(this, arguments);
							e.dequeue()
						}
					})
		})
	}
})(jQuery);
(function(b) {
	b.effects.transfer = function(d) {
		return this.queue(function() {
			var e = b(this), f = b(d.options.to), g = f.offset();
			f = {
				top : g.top,
				left : g.left,
				height : f.innerHeight(),
				width : f.innerWidth()
			};
			g = e.offset();
			var a = b('<div class="ui-effects-transfer"></div>')
					.appendTo(document.body).addClass(d.options.className).css(
							{
								top : g.top,
								left : g.left,
								height : e.innerHeight(),
								width : e.innerWidth(),
								position : "absolute"
							}).animate(f, d.duration, d.options.easing,
							function() {
								a.remove();
								d.callback && d.callback.apply(e[0], arguments);
								e.dequeue()
							})
		})
	}
})(jQuery);
(function(b) {
	b.widget("ui.accordion", {
		options : {
			active : 0,
			animated : "slide",
			autoHeight : true,
			clearStyle : false,
			collapsible : false,
			event : "click",
			fillSpace : false,
			header : "> li > :first-child,> :not(li):even",
			icons : {
				header : "ui-icon-triangle-1-e",
				headerSelected : "ui-icon-triangle-1-s"
			},
			navigation : false,
			navigationFilter : function() {
				return this.href.toLowerCase() === location.href.toLowerCase()
			}
		},
		_create : function() {
			var d = this, e = d.options;
			d.running = 0;
			d.element.addClass("ui-accordion ui-widget ui-helper-reset")
					.children("li").addClass("ui-accordion-li-fix");
			d.headers = d.element
					.find(e.header)
					.addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all")
					.bind("mouseenter.accordion", function() {
								e.disabled
										|| b(this).addClass("ui-state-hover")
							}).bind("mouseleave.accordion", function() {
								e.disabled
										|| b(this)
												.removeClass("ui-state-hover")
							}).bind("focus.accordion", function() {
								e.disabled
										|| b(this).addClass("ui-state-focus")
							}).bind("blur.accordion", function() {
								e.disabled
										|| b(this)
												.removeClass("ui-state-focus")
							});
			d.headers
					.next()
					.addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
			if (e.navigation) {
				var f = d.element.find("a").filter(e.navigationFilter).eq(0);
				if (f.length) {
					var g = f.closest(".ui-accordion-header");
					d.active = g.length ? g : f
							.closest(".ui-accordion-content").prev()
				}
			}
			d.active = d._findActive(d.active || e.active)
					.addClass("ui-state-default ui-state-active")
					.toggleClass("ui-corner-all").toggleClass("ui-corner-top");
			d.active.next().addClass("ui-accordion-content-active");
			d._createIcons();
			d.resize();
			d.element.attr("role", "tablist");
			d.headers.attr("role", "tab").bind("keydown.accordion",
					function(a) {
						return d._keydown(a)
					}).next().attr("role", "tabpanel");
			d.headers.not(d.active || "").attr({
						"aria-expanded" : "false",
						"aria-selected" : "false",
						tabIndex : -1
					}).next().hide();
			d.active.length ? d.active.attr({
						"aria-expanded" : "true",
						"aria-selected" : "true",
						tabIndex : 0
					}) : d.headers.eq(0).attr("tabIndex", 0);
			b.browser.safari || d.headers.find("a").attr("tabIndex", -1);
			e.event
					&& d.headers.bind(e.event.split(" ").join(".accordion ")
									+ ".accordion", function(a) {
								d._clickHandler.call(d, a, this);
								a.preventDefault()
							})
		},
		_createIcons : function() {
			var d = this.options;
			if (d.icons) {
				b("<span></span>").addClass("ui-icon " + d.icons.header)
						.prependTo(this.headers);
				this.active.children(".ui-icon").toggleClass(d.icons.header)
						.toggleClass(d.icons.headerSelected);
				this.element.addClass("ui-accordion-icons")
			}
		},
		_destroyIcons : function() {
			this.headers.children(".ui-icon").remove();
			this.element.removeClass("ui-accordion-icons")
		},
		destroy : function() {
			var d = this.options;
			this.element.removeClass("ui-accordion ui-widget ui-helper-reset")
					.removeAttr("role");
			this.headers
					.unbind(".accordion")
					.removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top")
					.removeAttr("role").removeAttr("aria-expanded")
					.removeAttr("aria-selected").removeAttr("tabIndex");
			this.headers.find("a").removeAttr("tabIndex");
			this._destroyIcons();
			var e = this.headers
					.next()
					.css("display", "")
					.removeAttr("role")
					.removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");
			if (d.autoHeight || d.fillHeight)
				e.css("height", "");
			return b.Widget.prototype.destroy.call(this)
		},
		_setOption : function(d, e) {
			b.Widget.prototype._setOption.apply(this, arguments);
			d == "active" && this.activate(e);
			if (d == "icons") {
				this._destroyIcons();
				e && this._createIcons()
			}
			if (d == "disabled")
				this.headers.add(this.headers.next())[e
						? "addClass"
						: "removeClass"]("ui-accordion-disabled ui-state-disabled")
		},
		_keydown : function(d) {
			if (!(this.options.disabled || d.altKey || d.ctrlKey)) {
				var e = b.ui.keyCode, f = this.headers.length, g = this.headers
						.index(d.target), a = false;
				switch (d.keyCode) {
					case e.RIGHT :
					case e.DOWN :
						a = this.headers[(g + 1) % f];
						break;
					case e.LEFT :
					case e.UP :
						a = this.headers[(g - 1 + f) % f];
						break;
					case e.SPACE :
					case e.ENTER :
						this._clickHandler({
									target : d.target
								}, d.target);
						d.preventDefault()
				}
				if (a) {
					b(d.target).attr("tabIndex", -1);
					b(a).attr("tabIndex", 0);
					a.focus();
					return false
				}
				return true
			}
		},
		resize : function() {
			var d = this.options, e;
			if (d.fillSpace) {
				if (b.browser.msie) {
					var f = this.element.parent().css("overflow");
					this.element.parent().css("overflow", "hidden")
				}
				e = this.element.parent().height();
				b.browser.msie && this.element.parent().css("overflow", f);
				this.headers.each(function() {
							e -= b(this).outerHeight(true)
						});
				this.headers.next().each(function() {
					b(this).height(Math.max(0, e - b(this).innerHeight()
									+ b(this).height()))
				}).css("overflow", "auto")
			} else if (d.autoHeight) {
				e = 0;
				this.headers.next().each(function() {
							e = Math.max(e, b(this).height("").height())
						}).height(e)
			}
			return this
		},
		activate : function(d) {
			this.options.active = d;
			d = this._findActive(d)[0];
			this._clickHandler({
						target : d
					}, d);
			return this
		},
		_findActive : function(d) {
			return d
					? typeof d === "number" ? this.headers.filter(":eq(" + d
							+ ")") : this.headers.not(this.headers.not(d))
					: d === false ? b([]) : this.headers.filter(":eq(0)")
		},
		_clickHandler : function(d, e) {
			var f = this.options;
			if (!f.disabled)
				if (d.target) {
					d = b(d.currentTarget || e);
					e = d[0] === this.active[0];
					f.active = f.collapsible && e ? false : this.headers
							.index(d);
					if (!(this.running || !f.collapsible && e)) {
						var g = this.active;
						i = d.next();
						c = this.active.next();
						h = {
							options : f,
							newHeader : e && f.collapsible ? b([]) : d,
							oldHeader : this.active,
							newContent : e && f.collapsible ? b([]) : i,
							oldContent : c
						};
						var a = this.headers.index(this.active[0]) > this.headers
								.index(d[0]);
						this.active = e ? b([]) : d;
						this._toggle(i, c, h, e, a);
						g.removeClass("ui-state-active ui-corner-top")
								.addClass("ui-state-default ui-corner-all")
								.children(".ui-icon")
								.removeClass(f.icons.headerSelected)
								.addClass(f.icons.header);
						if (!e) {
							d.removeClass("ui-state-default ui-corner-all")
									.addClass("ui-state-active ui-corner-top")
									.children(".ui-icon")
									.removeClass(f.icons.header)
									.addClass(f.icons.headerSelected);
							d.next().addClass("ui-accordion-content-active")
						}
					}
				} else if (f.collapsible) {
					this.active.removeClass("ui-state-active ui-corner-top")
							.addClass("ui-state-default ui-corner-all")
							.children(".ui-icon")
							.removeClass(f.icons.headerSelected)
							.addClass(f.icons.header);
					this.active.next().addClass("ui-accordion-content-active");
					var c = this.active.next(), h = {
						options : f,
						newHeader : b([]),
						oldHeader : f.active,
						newContent : b([]),
						oldContent : c
					}, i = this.active = b([]);
					this._toggle(i, c, h)
				}
		},
		_toggle : function(d, e, f, g, a) {
			var c = this, h = c.options;
			c.toShow = d;
			c.toHide = e;
			c.data = f;
			var i = function() {
				if (c)
					return c._completed.apply(c, arguments)
			};
			c._trigger("changestart", null, c.data);
			c.running = e.size() === 0 ? d.size() : e.size();
			if (h.animated) {
				f = {};
				f = h.collapsible && g ? {
					toShow : b([]),
					toHide : e,
					complete : i,
					down : a,
					autoHeight : h.autoHeight || h.fillSpace
				} : {
					toShow : d,
					toHide : e,
					complete : i,
					down : a,
					autoHeight : h.autoHeight || h.fillSpace
				};
				if (!h.proxied)
					h.proxied = h.animated;
				if (!h.proxiedDuration)
					h.proxiedDuration = h.duration;
				h.animated = b.isFunction(h.proxied) ? h.proxied(f) : h.proxied;
				h.duration = b.isFunction(h.proxiedDuration) ? h
						.proxiedDuration(f) : h.proxiedDuration;
				g = b.ui.accordion.animations;
				var j = h.duration, n = h.animated;
				if (n && !g[n] && !b.easing[n])
					n = "slide";
				g[n] || (g[n] = function(o) {
					this.slide(o, {
								easing : n,
								duration : j || 700
							})
				});
				g[n](f)
			} else {
				if (h.collapsible && g)
					d.toggle();
				else {
					e.hide();
					d.show()
				}
				i(true)
			}
			e.prev().attr({
						"aria-expanded" : "false",
						"aria-selected" : "false",
						tabIndex : -1
					}).blur();
			d.prev().attr({
						"aria-expanded" : "true",
						"aria-selected" : "true",
						tabIndex : 0
					}).focus()
		},
		_completed : function(d) {
			this.running = d ? 0 : --this.running;
			if (!this.running) {
				this.options.clearStyle && this.toShow.add(this.toHide).css({
							height : "",
							overflow : ""
						});
				this.toHide.removeClass("ui-accordion-content-active");
				if (this.toHide.length)
					this.toHide.parent()[0].className = this.toHide.parent()[0].className;
				this._trigger("change", null, this.data)
			}
		}
	});
	b.extend(b.ui.accordion, {
		version : "1.8.12",
		animations : {
			slide : function(d, e) {
				d = b.extend({
							easing : "swing",
							duration : 300
						}, d, e);
				if (d.toHide.size())
					if (d.toShow.size()) {
						var f = d.toShow.css("overflow"), g = 0, a = {}, c = {}, h;
						e = d.toShow;
						h = e[0].style.width;
						e
								.width(parseInt(e.parent().width(), 10)
										- parseInt(e.css("paddingLeft"), 10)
										- parseInt(e.css("paddingRight"), 10)
										- (parseInt(e.css("borderLeftWidth"),
												10) || 0)
										- (parseInt(e.css("borderRightWidth"),
												10) || 0));
						b.each(["height", "paddingTop", "paddingBottom"],
								function(i, j) {
									c[j] = "hide";
									i = ("" + b.css(d.toShow[0], j))
											.match(/^([\d+-.]+)(.*)$/);
									a[j] = {
										value : i[1],
										unit : i[2] || "px"
									}
								});
						d.toShow.css({
									height : 0,
									overflow : "hidden"
								}).show();
						d.toHide.filter(":hidden").each(d.complete).end()
								.filter(":visible").animate(c, {
									step : function(i, j) {
										if (j.prop == "height")
											g = j.end - j.start === 0
													? 0
													: (j.now - j.start)
															/ (j.end - j.start);
										d.toShow[0].style[j.prop] = g
												* a[j.prop].value
												+ a[j.prop].unit
									},
									duration : d.duration,
									easing : d.easing,
									complete : function() {
										d.autoHeight
												|| d.toShow.css("height", "");
										d.toShow.css({
													width : h,
													overflow : f
												});
										d.complete()
									}
								})
					} else
						d.toHide.animate({
									height : "hide",
									paddingTop : "hide",
									paddingBottom : "hide"
								}, d);
				else
					d.toShow.animate({
								height : "show",
								paddingTop : "show",
								paddingBottom : "show"
							}, d)
			},
			bounceslide : function(d) {
				this.slide(d, {
							easing : d.down ? "easeOutBounce" : "swing",
							duration : d.down ? 1E3 : 200
						})
			}
		}
	})
})(jQuery);
(function(b) {
	var d = 0;
	b.widget("ui.autocomplete", {
		options : {
			appendTo : "body",
			autoFocus : false,
			delay : 300,
			minLength : 1,
			position : {
				my : "left top",
				at : "left bottom",
				collision : "none"
			},
			source : null
		},
		pending : 0,
		_create : function() {
			var e = this, f = this.element[0].ownerDocument, g;
			this.element.addClass("ui-autocomplete-input").attr("autocomplete",
					"off").attr({
						role : "textbox",
						"aria-autocomplete" : "list",
						"aria-haspopup" : "true"
					}).bind("keydown.autocomplete", function(a) {
						if (!(e.options.disabled || e.element.attr("readonly"))) {
							g = false;
							var c = b.ui.keyCode;
							switch (a.keyCode) {
								case c.PAGE_UP :
									e._move("previousPage", a);
									break;
								case c.PAGE_DOWN :
									e._move("nextPage", a);
									break;
								case c.UP :
									e._move("previous", a);
									a.preventDefault();
									break;
								case c.DOWN :
									e._move("next", a);
									a.preventDefault();
									break;
								case c.ENTER :
								case c.NUMPAD_ENTER :
									if (e.menu.active) {
										g = true;
										a.preventDefault()
									}
								case c.TAB :
									if (!e.menu.active)
										return;
									e.menu.select(a);
									break;
								case c.ESCAPE :
									e.element.val(e.term);
									e.close(a);
									break;
								default :
									clearTimeout(e.searching);
									e.searching = setTimeout(function() {
												//if (e.term != e.element.val()) {//解决连续两次输入相同的值时不弹出提示层bug
													e.selectedItem = null;
													e.search(null, a)
												//}
											}, e.options.delay);
									break
							}
						}
					}).bind("keypress.autocomplete", function(a) {
						if (g) {
							g = false;
							a.preventDefault()
						}
					}).bind("focus.autocomplete", function() {
						if (!e.options.disabled) {
							e.selectedItem = null;
							e.previous = e.element.val()
						}
					}).bind("blur.autocomplete", function(a) {
						if (!e.options.disabled) {
							clearTimeout(e.searching);
							e.closing = setTimeout(function() {
										e.close(a);
										e._change(a)
									}, 150)
						}
					});
			this._initSource();
			this.response = function() {
				return e._response.apply(e, arguments)
			};
			//此处原始代码为b("<ul></ul>")，添加id为解决纵向滚动条bug
			this.menu = b("<ul id='jquery_autocomplete_own'></ul>").addClass("ui-autocomplete").appendTo(b(
					this.options.appendTo || "body", f)[0]).mousedown(
					function(a) {
						var c = e.menu.element[0];
						b(a.target).closest(".ui-menu-item").length
								|| setTimeout(function() {
											b(document).one("mousedown",
													function(h) {
														h.target !== e.element[0]
																&& h.target !== c
																&& !b.ui
																		.contains(
																				c,
																				h.target)
																&& e.close()
													})
										}, 1);
						setTimeout(function() {
									clearTimeout(e.closing)
								}, 13)
					}).menu({
				focus : function(a, c) {
					c = c.item.data("item.autocomplete");
					false !== e._trigger("focus", a, {
								item : c
							}) && /^key/.test(a.originalEvent.type)
							&& e.element.val(c.value)
				},
				selected : function(a, c) {
					var h = c.item.data("item.autocomplete"), i = e.previous;
					if (e.element[0] !== f.activeElement) {
						e.element.focus();
						e.previous = i;
						setTimeout(function() {
									e.previous = i;
									e.selectedItem = h
								}, 1)
					}
					false !== e._trigger("select", a, {
								item : h
							}) && e.element.val(h.value);
					e.term = e.element.val();
					e.close(a);
					e.selectedItem = h
				},
				blur : function() {
					e.menu.element.is(":visible") && e.element.val() !== e.term
							&& e.element.val(e.term)
				}
			}).zIndex(this.element.zIndex() + 1).css({
						top : 0,
						left : 0
					}).hide().data("menu");
			b.fn.bgiframe && this.menu.element.bgiframe()
		},
		destroy : function() {
			this.element.removeClass("ui-autocomplete-input")
					.removeAttr("autocomplete").removeAttr("role")
					.removeAttr("aria-autocomplete")
					.removeAttr("aria-haspopup");
			this.menu.element.remove();
			b.Widget.prototype.destroy.call(this)
		},
		_setOption : function(e, f) {
			b.Widget.prototype._setOption.apply(this, arguments);
			e === "source" && this._initSource();
			if (e === "appendTo")
				this.menu.element.appendTo(b(f || "body",
						this.element[0].ownerDocument)[0]);
			e === "disabled" && f && this.xhr && this.xhr.abort()
		},
		_initSource : function() {
			var e = this, f, g;
			if (b.isArray(this.options.source)) {
				f = this.options.source;
				this.source = function(a, c) {
					c(b.ui.autocomplete.filter(f, a.term))
				}
			} else if (typeof this.options.source === "string") {
				g = this.options.source;
				this.source = function(a, c) {
					e.xhr && e.xhr.abort();
					e.xhr = b.ajax({
								url : g,
								data : a,
								dataType : "json",
								autocompleteRequest : ++d,
								success : function(h) {
									this.autocompleteRequest === d && c(h)
								},
								error : function() {
									this.autocompleteRequest === d && c([])
								}
							})
				}
			} else
				this.source = this.options.source
		},
		search : function(e, f) {
			e = e != null ? e : this.element.val();
			this.term = this.element.val();
			if (e.length < this.options.minLength)
				return this.close(f);
			clearTimeout(this.closing);
			if (this._trigger("search", f) !== false)
				return this._search(e)
		},
		_search : function(e) {
			this.pending++;
			this.element.addClass("ui-autocomplete-loading");
			this.source({
						term : e
					}, this.response)
		},
		_response : function(e) {
			if (!this.options.disabled && e && e.length) {
				e = this._normalize(e);
				this._suggest(e);
				this._trigger("open")
			} else
				this.close();
			this.pending--;
			this.pending || this.element.removeClass("ui-autocomplete-loading")
		},
		close : function(e) {
			clearTimeout(this.closing);
			if (this.menu.element.is(":visible")) {
				this.menu.element.hide();
				this.menu.deactivate();
				this._trigger("close", e)
			}
		},
		_change : function(e) {
			this.previous !== this.element.val()
					&& this._trigger("change", e, {
								item : this.selectedItem
							})
		},
		_normalize : function(e) {
			if (e.length && e[0].label && e[0].value)
				return e;
			return b.map(e, function(f) {
						if (typeof f === "string")
							return {
								label : f,
								value : f
							};
						return b.extend({
									label : f.label || f.value,
									value : f.value || f.label
								}, f)
					})
		},
		_suggest : function(e) {
			var f = this.menu.element.empty().zIndex(this.element.zIndex() + 1);
			this._renderMenu(f, e);
			this.menu.deactivate();
			this.menu.refresh();
			f.show();
			//this._resizeMenu();//解决除ie浏览器下，不超出出现横向滚动条bug问题
			f.position(b.extend({
						of : this.element
					}, this.options.position));
			this.options.autoFocus && this.menu.next(new b.Event("mouseover"))
		},
		_resizeMenu : function() {
			var e = this.menu.element;
			e.outerWidth(Math.max(e.width("").outerWidth(), this.element
							.outerWidth()))
		},
		_renderMenu : function(e, f) {
			var g = this;
			var num_own = 0;  //解决纵向滚动条bug
			b.each(f, function(a, c) {
						g._renderItem(e, c);
						num_own++;//解决纵向滚动条bug
					})
					
					
			/**********解决纵向滚动条bug*******/
			if(num_own > 10) {
				$("#jquery_autocomplete_own").css("height","220px");
				$("#jquery_autocomplete_own").css("overflow-y","auto");
				$("#jquery_autocomplete_own").css("width","247px");
			} else {
				$("#jquery_autocomplete_own").css("height","auto");
				$("#jquery_autocomplete_own").css("overflow-y","");
				$("#jquery_autocomplete_own").css("width","230px");
			}
			/**********解决纵向滚动条bug*******/
		},
		_renderItem : function(e, f) {
			//此处原始代码为<li></li>，为解决宽度不够换行问题，故加大宽度
			return b("<li style='width:230px;'></li>").data("item.autocomplete", f)
					.append(b("<a></a>").text(f.label)).appendTo(e)
		},
		_move : function(e, f) {
			if (this.menu.element.is(":visible"))
				if (this.menu.first() && /^previous/.test(e)
						|| this.menu.last() && /^next/.test(e)) {
					this.element.val(this.term);
					this.menu.deactivate()
				} else
					this.menu[e](f);
			else
				this.search(null, f)
		},
		widget : function() {
			return this.menu.element
		}
	});
	b.extend(b.ui.autocomplete, {
				escapeRegex : function(e) {
					return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
				},
				filter : function(e, f) {
					var g = new RegExp(b.ui.autocomplete.escapeRegex(f), "i");
					return b.grep(e, function(a) {
								return g.test(a.label || a.value || a)
							})
				}
			})
})(jQuery);
(function(b) {
	b.widget("ui.menu", {
		_create : function() {
			var d = this;
			this.element
					.addClass("ui-menu ui-widget ui-widget-content ui-corner-all")
					.attr({
								role : "listbox",
								"aria-activedescendant" : "ui-active-menuitem"
							}).click(function(e) {
								if (b(e.target).closest(".ui-menu-item a").length) {
									e.preventDefault();
									d.select(e)
								}
							});
			this.refresh()
		},
		refresh : function() {
			var d = this;
			this.element.children("li:not(.ui-menu-item):has(a)")
					.addClass("ui-menu-item").attr("role", "menuitem")
					.children("a").addClass("ui-corner-all").attr("tabindex",
							-1).mouseenter(function(e) {
								d.activate(e, b(this).parent())
							}).mouseleave(function() {
								d.deactivate()
							})
		},
		activate : function(d, e) {
			this.deactivate();
			if (this.hasScroll()) {
				var f = e.offset().top - this.element.offset().top, g = this.element
						.attr("scrollTop"), a = this.element.height();
				if (f < 0)
					this.element.attr("scrollTop", g + f);
				else
					f >= a
							&& this.element.attr("scrollTop", g + f - a
											+ e.height())
			}
			this.active = e.eq(0).children("a").addClass("ui-state-hover")
					.attr("id", "ui-active-menuitem").end();
			this._trigger("focus", d, {
						item : e
					})
		},
		deactivate : function() {
			if (this.active) {
				this.active.children("a").removeClass("ui-state-hover")
						.removeAttr("id");
				this._trigger("blur");
				this.active = null
			}
		},
		next : function(d) {
			this.move("next", ".ui-menu-item:first", d)
		},
		previous : function(d) {
			this.move("prev", ".ui-menu-item:last", d)
		},
		first : function() {
			return this.active && !this.active.prevAll(".ui-menu-item").length
		},
		last : function() {
			return this.active && !this.active.nextAll(".ui-menu-item").length
		},
		move : function(d, e, f) {
			if (this.active) {
				d = this.active[d + "All"](".ui-menu-item").eq(0);
				d.length ? this.activate(f, d) : this.activate(f, this.element
								.children(e))
			} else
				this.activate(f, this.element.children(e))
		},
		nextPage : function(d) {
			if (this.hasScroll())
				if (!this.active || this.last())
					this.activate(d, this.element
									.children(".ui-menu-item:first"));
				else {
					var e = this.active.offset().top, f = this.element.height(), g = this.element
							.children(".ui-menu-item").filter(function() {
								var a = b(this).offset().top - e - f
										+ b(this).height();
								return a < 10 && a > -10
							});
					g.length
							|| (g = this.element.children(".ui-menu-item:last"));
					this.activate(d, g)
				}
			else
				this.activate(d, this.element.children(".ui-menu-item")
								.filter(!this.active || this.last()
										? ":first"
										: ":last"))
		},
		previousPage : function(d) {
			if (this.hasScroll())
				if (!this.active || this.first())
					this.activate(d, this.element
									.children(".ui-menu-item:last"));
				else {
					var e = this.active.offset().top, f = this.element.height();
					result = this.element.children(".ui-menu-item").filter(
							function() {
								var g = b(this).offset().top - e + f
										- b(this).height();
								return g < 10 && g > -10
							});
					result.length
							|| (result = this.element
									.children(".ui-menu-item:first"));
					this.activate(d, result)
				}
			else
				this.activate(d, this.element.children(".ui-menu-item")
								.filter(!this.active || this.first()
										? ":last"
										: ":first"))
		},
		hasScroll : function() {
			return this.element.height() < this.element.attr("scrollHeight")
		},
		select : function(d) {
			this._trigger("selected", d, {
						item : this.active
					})
		}
	})
})(jQuery);
(function(b) {
	var d, e = function(g) {
		b(":ui-button", g.target.form).each(function() {
					var a = b(this).data("button");
					setTimeout(function() {
								a.refresh()
							}, 1)
				})
	}, f = function(g) {
		var a = g.name, c = g.form, h = b([]);
		if (a)
			h = c ? b(c).find("[name='" + a + "']") : b("[name='" + a + "']",
					g.ownerDocument).filter(function() {
						return !this.form
					});
		return h
	};
	b.widget("ui.button", {
		options : {
			disabled : null,
			text : true,
			label : null,
			icons : {
				primary : null,
				secondary : null
			}
		},
		_create : function() {
			this.element.closest("form").unbind("reset.button").bind(
					"reset.button", e);
			if (typeof this.options.disabled !== "boolean")
				this.options.disabled = this.element.attr("disabled");
			this._determineButtonType();
			this.hasTitle = !!this.buttonElement.attr("title");
			var g = this, a = this.options, c = this.type === "checkbox"
					|| this.type === "radio", h = "ui-state-hover"
					+ (!c ? " ui-state-active" : "");
			if (a.label === null)
				a.label = this.buttonElement.html();
			if (this.element.is(":disabled"))
				a.disabled = true;
			this.buttonElement
					.addClass("ui-button ui-widget ui-state-default ui-corner-all")
					.attr("role", "button").bind("mouseenter.button",
							function() {
								if (!a.disabled) {
									b(this).addClass("ui-state-hover");
									this === d
											&& b(this)
													.addClass("ui-state-active")
								}
							}).bind("mouseleave.button", function() {
								a.disabled || b(this).removeClass(h)
							}).bind("focus.button", function() {
								b(this).addClass("ui-state-focus")
							}).bind("blur.button", function() {
								b(this).removeClass("ui-state-focus")
							});
			c && this.element.bind("change.button", function() {
						g.refresh()
					});
			if (this.type === "checkbox")
				this.buttonElement.bind("click.button", function() {
							if (a.disabled)
								return false;
							b(this).toggleClass("ui-state-active");
							g.buttonElement.attr("aria-pressed",
									g.element[0].checked)
						});
			else if (this.type === "radio")
				this.buttonElement.bind("click.button", function() {
							if (a.disabled)
								return false;
							b(this).addClass("ui-state-active");
							g.buttonElement.attr("aria-pressed", true);
							var i = g.element[0];
							f(i).not(i).map(function() {
										return b(this).button("widget")[0]
									}).removeClass("ui-state-active").attr(
									"aria-pressed", false)
						});
			else {
				this.buttonElement.bind("mousedown.button", function() {
							if (a.disabled)
								return false;
							b(this).addClass("ui-state-active");
							d = this;
							b(document).one("mouseup", function() {
										d = null
									})
						}).bind("mouseup.button", function() {
							if (a.disabled)
								return false;
							b(this).removeClass("ui-state-active")
						}).bind("keydown.button", function(i) {
					if (a.disabled)
						return false;
					if (i.keyCode == b.ui.keyCode.SPACE
							|| i.keyCode == b.ui.keyCode.ENTER)
						b(this).addClass("ui-state-active")
				}).bind("keyup.button", function() {
							b(this).removeClass("ui-state-active")
						});
				this.buttonElement.is("a")
						&& this.buttonElement.keyup(function(i) {
									i.keyCode === b.ui.keyCode.SPACE
											&& b(this).click()
								})
			}
			this._setOption("disabled", a.disabled)
		},
		_determineButtonType : function() {
			this.type = this.element.is(":checkbox")
					? "checkbox"
					: this.element.is(":radio") ? "radio" : this.element
							.is("input") ? "input" : "button";
			if (this.type === "checkbox" || this.type === "radio") {
				var g = this.element.parents().filter(":last"), a = "label[for="
						+ this.element.attr("id") + "]";
				this.buttonElement = g.find(a);
				if (!this.buttonElement.length) {
					g = g.length ? g.siblings() : this.element.siblings();
					this.buttonElement = g.filter(a);
					if (!this.buttonElement.length)
						this.buttonElement = g.find(a)
				}
				this.element.addClass("ui-helper-hidden-accessible");
				(g = this.element.is(":checked"))
						&& this.buttonElement.addClass("ui-state-active");
				this.buttonElement.attr("aria-pressed", g)
			} else
				this.buttonElement = this.element
		},
		widget : function() {
			return this.buttonElement
		},
		destroy : function() {
			this.element.removeClass("ui-helper-hidden-accessible");
			this.buttonElement
					.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only")
					.removeAttr("role").removeAttr("aria-pressed")
					.html(this.buttonElement.find(".ui-button-text").html());
			this.hasTitle || this.buttonElement.removeAttr("title");
			b.Widget.prototype.destroy.call(this)
		},
		_setOption : function(g, a) {
			b.Widget.prototype._setOption.apply(this, arguments);
			if (g === "disabled")
				a ? this.element.attr("disabled", true) : this.element
						.removeAttr("disabled");
			this._resetButton()
		},
		refresh : function() {
			var g = this.element.is(":disabled");
			g !== this.options.disabled && this._setOption("disabled", g);
			if (this.type === "radio")
				f(this.element[0]).each(function() {
					b(this).is(":checked") ? b(this).button("widget")
							.addClass("ui-state-active").attr("aria-pressed",
									true) : b(this).button("widget")
							.removeClass("ui-state-active").attr(
									"aria-pressed", false)
				});
			else if (this.type === "checkbox")
				this.element.is(":checked")
						? this.buttonElement.addClass("ui-state-active").attr(
								"aria-pressed", true)
						: this.buttonElement.removeClass("ui-state-active")
								.attr("aria-pressed", false)
		},
		_resetButton : function() {
			if (this.type === "input")
				this.options.label && this.element.val(this.options.label);
			else {
				var g = this.buttonElement
						.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"), a = b("<span></span>")
						.addClass("ui-button-text").html(this.options.label)
						.appendTo(g.empty()).text(), c = this.options.icons, h = c.primary
						&& c.secondary, i = [];
				if (c.primary || c.secondary) {
					if (this.options.text)
						i.push("ui-button-text-icon"
								+ (h ? "s" : c.primary
										? "-primary"
										: "-secondary"));
					c.primary
							&& g
									.prepend("<span class='ui-button-icon-primary ui-icon "
											+ c.primary + "'></span>");
					c.secondary
							&& g
									.append("<span class='ui-button-icon-secondary ui-icon "
											+ c.secondary + "'></span>");
					if (!this.options.text) {
						i.push(h
								? "ui-button-icons-only"
								: "ui-button-icon-only");
						this.hasTitle || g.attr("title", a)
					}
				} else
					i.push("ui-button-text-only");
				g.addClass(i.join(" "))
			}
		}
	});
	b.widget("ui.buttonset", {
		options : {
			items : ":button, :submit, :reset, :checkbox, :radio, a, :data(button)"
		},
		_create : function() {
			this.element.addClass("ui-buttonset")
		},
		_init : function() {
			this.refresh()
		},
		_setOption : function(g, a) {
			g === "disabled" && this.buttons.button("option", g, a);
			b.Widget.prototype._setOption.apply(this, arguments)
		},
		refresh : function() {
			this.buttons = this.element
					.find(this.options.items)
					.filter(":ui-button")
					.button("refresh")
					.end()
					.not(":ui-button")
					.button()
					.end()
					.map(function() {
								return b(this).button("widget")[0]
							})
					.removeClass("ui-corner-all ui-corner-left ui-corner-right")
					.filter(":first").addClass("ui-corner-left").end()
					.filter(":last").addClass("ui-corner-right").end().end()
		},
		destroy : function() {
			this.element.removeClass("ui-buttonset");
			this.buttons.map(function() {
						return b(this).button("widget")[0]
					}).removeClass("ui-corner-left ui-corner-right").end()
					.button("destroy");
			b.Widget.prototype.destroy.call(this)
		}
	})
})(jQuery);
(function(b, d) {
	function e() {
		this.debug = false;
		this._curInst = null;
		this._keyEvent = false;
		this._disabledInputs = [];
		this._inDialog = this._datepickerShowing = false;
		this._mainDivId = "ui-datepicker-div";
		this._inlineClass = "ui-datepicker-inline";
		this._appendClass = "ui-datepicker-append";
		this._triggerClass = "ui-datepicker-trigger";
		this._dialogClass = "ui-datepicker-dialog";
		this._disableClass = "ui-datepicker-disabled";
		this._unselectableClass = "ui-datepicker-unselectable";
		this._currentClass = "ui-datepicker-current-day";
		this._dayOverClass = "ui-datepicker-days-cell-over";
		this.regional = [];
		this.regional[""] = {
			closeText : "Done",
			prevText : "Prev",
			nextText : "Next",
			currentText : "Today",
			monthNames : ["January", "February", "March", "April", "May",
					"June", "July", "August", "September", "October",
					"November", "December"],
			monthNamesShort : ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
					"Aug", "Sep", "Oct", "Nov", "Dec"],
			dayNames : ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
					"Friday", "Saturday"],
			dayNamesShort : ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
			dayNamesMin : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
			weekHeader : "Wk",
			dateFormat : "mm/dd/yy",
			firstDay : 0,
			isRTL : false,
			showMonthAfterYear : false,
			yearSuffix : ""
		};
		this._defaults = {
			showOn : "focus",
			showAnim : "fadeIn",
			showOptions : {},
			defaultDate : null,
			appendText : "",
			buttonText : "...",
			buttonImage : "",
			buttonImageOnly : false,
			hideIfNoPrevNext : false,
			navigationAsDateFormat : false,
			gotoCurrent : false,
			changeMonth : false,
			changeYear : false,
			yearRange : "c-10:c+10",
			showOtherMonths : false,
			selectOtherMonths : false,
			showWeek : false,
			calculateWeek : this.iso8601Week,
			shortYearCutoff : "+10",
			minDate : null,
			maxDate : null,
			duration : "fast",
			beforeShowDay : null,
			beforeShow : null,
			onSelect : null,
			onChangeMonthYear : null,
			onClose : null,
			numberOfMonths : 1,
			showCurrentAtPos : 0,
			stepMonths : 1,
			stepBigMonths : 12,
			altField : "",
			altFormat : "",
			constrainInput : true,
			showButtonPanel : false,
			autoSize : false
		};
		b.extend(this._defaults, this.regional[""]);
		this.dpDiv = b('<div id="'
				+ this._mainDivId
				+ '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')
	}
	function f(a, c) {
		b.extend(a, c);
		for (var h in c)
			if (c[h] == null || c[h] == d)
				a[h] = c[h];
		return a
	}
	b.extend(b.ui, {
				datepicker : {
					version : "1.8.12"
				}
			});
	var g = (new Date).getTime();
	b.extend(e.prototype, {
		markerClassName : "hasDatepicker",
		log : function() {
			this.debug && console.log.apply("", arguments)
		},
		_widgetDatepicker : function() {
			return this.dpDiv
		},
		setDefaults : function(a) {
			f(this._defaults, a || {});
			return this
		},
		_attachDatepicker : function(a, c) {
			var h = null;
			for (var i in this._defaults) {
				var j = a.getAttribute("date:" + i);
				if (j) {
					h = h || {};
					try {
						h[i] = eval(j)
					} catch (n) {
						h[i] = j
					}
				}
			}
			i = a.nodeName.toLowerCase();
			j = i == "div" || i == "span";
			if (!a.id) {
				this.uuid += 1;
				a.id = "dp" + this.uuid
			}
			var o = this._newInst(b(a), j);
			o.settings = b.extend({}, c || {}, h || {});
			if (i == "input")
				this._connectDatepicker(a, o);
			else
				j && this._inlineDatepicker(a, o)
		},
		_newInst : function(a, c) {
			return {
				id : a[0].id.replace(/([^A-Za-z0-9_-])/g, "\\\\$1"),
				input : a,
				selectedDay : 0,
				selectedMonth : 0,
				selectedYear : 0,
				drawMonth : 0,
				drawYear : 0,
				inline : c,
				dpDiv : !c
						? this.dpDiv
						: b('<div class="'
								+ this._inlineClass
								+ ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')
			}
		},
		_connectDatepicker : function(a, c) {
			var h = b(a);
			c.append = b([]);
			c.trigger = b([]);
			if (!h.hasClass(this.markerClassName)) {
				this._attachments(h, c);
				h.addClass(this.markerClassName).keydown(this._doKeyDown)
						.keypress(this._doKeyPress).keyup(this._doKeyUp).bind(
								"setData.datepicker", function(i, j, n) {
									c.settings[j] = n
								}).bind("getData.datepicker", function(i, j) {
									return this._get(c, j)
								});
				this._autoSize(c);
				b.data(a, "datepicker", c)
			}
		},
		_attachments : function(a, c) {
			var h = this._get(c, "appendText"), i = this._get(c, "isRTL");
			c.append && c.append.remove();
			if (h) {
				c.append = b('<span class="' + this._appendClass + '">' + h
						+ "</span>");
				a[i ? "before" : "after"](c.append)
			}
			a.unbind("focus", this._showDatepicker);
			c.trigger && c.trigger.remove();
			h = this._get(c, "showOn");
			if (h == "focus" || h == "both")
				a.focus(this._showDatepicker);
			if (h == "button" || h == "both") {
				h = this._get(c, "buttonText");
				var j = this._get(c, "buttonImage");
				c.trigger = b(this._get(c, "buttonImageOnly") ? b("<img/>")
						.addClass(this._triggerClass).attr({
									src : j,
									alt : h,
									title : h
								}) : b('<button type="button"></button>')
						.addClass(this._triggerClass).html(j == ""
								? h
								: b("<img/>").attr({
											src : j,
											alt : h,
											title : h
										})));
				a[i ? "before" : "after"](c.trigger);
				c.trigger.click(function() {
							b.datepicker._datepickerShowing
									&& b.datepicker._lastInput == a[0]
									? b.datepicker._hideDatepicker()
									: b.datepicker._showDatepicker(a[0]);
							return false
						})
			}
		},
		_autoSize : function(a) {
			if (this._get(a, "autoSize") && !a.inline) {
				var c = new Date(2009, 11, 20), h = this._get(a, "dateFormat");
				if (h.match(/[DM]/)) {
					var i = function(j) {
						for (var n = 0, o = 0, l = 0; l < j.length; l++)
							if (j[l].length > n) {
								n = j[l].length;
								o = l
							}
						return o
					};
					c.setMonth(i(this._get(a, h.match(/MM/)
									? "monthNames"
									: "monthNamesShort")));
					c.setDate(i(this._get(a, h.match(/DD/)
									? "dayNames"
									: "dayNamesShort"))
							+ 20 - c.getDay())
				}
				a.input.attr("size", this._formatDate(a, c).length)
			}
		},
		_inlineDatepicker : function(a, c) {
			var h = b(a);
			if (!h.hasClass(this.markerClassName)) {
				h.addClass(this.markerClassName).append(c.dpDiv).bind(
						"setData.datepicker", function(i, j, n) {
							c.settings[j] = n
						}).bind("getData.datepicker", function(i, j) {
							return this._get(c, j)
						});
				b.data(a, "datepicker", c);
				this._setDate(c, this._getDefaultDate(c), true);
				this._updateDatepicker(c);
				this._updateAlternate(c);
				c.dpDiv.show()
			}
		},
		_dialogDatepicker : function(a, c, h, i, j) {
			a = this._dialogInst;
			if (!a) {
				this.uuid += 1;
				this._dialogInput = b('<input type="text" id="'
						+ ("dp" + this.uuid)
						+ '" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');
				this._dialogInput.keydown(this._doKeyDown);
				b("body").append(this._dialogInput);
				a = this._dialogInst = this._newInst(this._dialogInput, false);
				a.settings = {};
				b.data(this._dialogInput[0], "datepicker", a)
			}
			f(a.settings, i || {});
			c = c && c.constructor == Date ? this._formatDate(a, c) : c;
			this._dialogInput.val(c);
			this._pos = j ? j.length ? j : [j.pageX, j.pageY] : null;
			if (!this._pos)
				this._pos = [
						document.documentElement.clientWidth
								/ 2
								- 100
								+ (document.documentElement.scrollLeft || document.body.scrollLeft),
						document.documentElement.clientHeight
								/ 2
								- 150
								+ (document.documentElement.scrollTop || document.body.scrollTop)];
			this._dialogInput.css("left", this._pos[0] + 20 + "px").css("top",
					this._pos[1] + "px");
			a.settings.onSelect = h;
			this._inDialog = true;
			this.dpDiv.addClass(this._dialogClass);
			this._showDatepicker(this._dialogInput[0]);
			b.blockUI && b.blockUI(this.dpDiv);
			b.data(this._dialogInput[0], "datepicker", a);
			return this
		},
		_destroyDatepicker : function(a) {
			var c = b(a), h = b.data(a, "datepicker");
			if (c.hasClass(this.markerClassName)) {
				var i = a.nodeName.toLowerCase();
				b.removeData(a, "datepicker");
				if (i == "input") {
					h.append.remove();
					h.trigger.remove();
					c.removeClass(this.markerClassName).unbind("focus",
							this._showDatepicker).unbind("keydown",
							this._doKeyDown).unbind("keypress",
							this._doKeyPress).unbind("keyup", this._doKeyUp)
				} else if (i == "div" || i == "span")
					c.removeClass(this.markerClassName).empty()
			}
		},
		_enableDatepicker : function(a) {
			var c = b(a), h = b.data(a, "datepicker");
			if (c.hasClass(this.markerClassName)) {
				var i = a.nodeName.toLowerCase();
				if (i == "input") {
					a.disabled = false;
					h.trigger.filter("button").each(function() {
								this.disabled = false
							}).end().filter("img").css({
								opacity : "1.0",
								cursor : ""
							})
				} else if (i == "div" || i == "span")
					c.children("." + this._inlineClass).children()
							.removeClass("ui-state-disabled");
				this._disabledInputs = b.map(this._disabledInputs, function(j) {
							return j == a ? null : j
						})
			}
		},
		_disableDatepicker : function(a) {
			var c = b(a), h = b.data(a, "datepicker");
			if (c.hasClass(this.markerClassName)) {
				var i = a.nodeName.toLowerCase();
				if (i == "input") {
					a.disabled = true;
					h.trigger.filter("button").each(function() {
								this.disabled = true
							}).end().filter("img").css({
								opacity : "0.5",
								cursor : "default"
							})
				} else if (i == "div" || i == "span")
					c.children("." + this._inlineClass).children()
							.addClass("ui-state-disabled");
				this._disabledInputs = b.map(this._disabledInputs, function(j) {
							return j == a ? null : j
						});
				this._disabledInputs[this._disabledInputs.length] = a
			}
		},
		_isDisabledDatepicker : function(a) {
			if (!a)
				return false;
			for (var c = 0; c < this._disabledInputs.length; c++)
				if (this._disabledInputs[c] == a)
					return true;
			return false
		},
		_getInst : function(a) {
			try {
				return b.data(a, "datepicker")
			} catch (c) {
				throw "Missing instance data for this datepicker";
			}
		},
		_optionDatepicker : function(a, c, h) {
			var i = this._getInst(a);
			if (arguments.length == 2 && typeof c == "string")
				return c == "defaults"
						? b.extend({}, b.datepicker._defaults)
						: i ? c == "all" ? b.extend({}, i.settings) : this
								._get(i, c) : null;
			var j = c || {};
			if (typeof c == "string") {
				j = {};
				j[c] = h
			}
			if (i) {
				this._curInst == i && this._hideDatepicker();
				var n = this._getDateDatepicker(a, true), o = this
						._getMinMaxDate(i, "min"), l = this._getMinMaxDate(i,
						"max");
				f(i.settings, j);
				if (o !== null && j.dateFormat !== d && j.minDate === d)
					i.settings.minDate = this._formatDate(i, o);
				if (l !== null && j.dateFormat !== d && j.maxDate === d)
					i.settings.maxDate = this._formatDate(i, l);
				this._attachments(b(a), i);
				this._autoSize(i);
				this._setDateDatepicker(a, n);
				this._updateDatepicker(i)
			}
		},
		_changeDatepicker : function(a, c, h) {
			this._optionDatepicker(a, c, h)
		},
		_refreshDatepicker : function(a) {
			(a = this._getInst(a)) && this._updateDatepicker(a)
		},
		_setDateDatepicker : function(a, c) {
			if (a = this._getInst(a)) {
				this._setDate(a, c);
				this._updateDatepicker(a);
				this._updateAlternate(a)
			}
		},
		_getDateDatepicker : function(a, c) {
			(a = this._getInst(a)) && !a.inline && this._setDateFromField(a, c);
			return a ? this._getDate(a) : null
		},
		_doKeyDown : function(a) {
			var c = b.datepicker._getInst(a.target), h = true, i = c.dpDiv
					.is(".ui-datepicker-rtl");
			c._keyEvent = true;
			if (b.datepicker._datepickerShowing)
				switch (a.keyCode) {
					case 9 :
						b.datepicker._hideDatepicker();
						h = false;
						break;
					case 13 :
						h = b(	"td." + b.datepicker._dayOverClass + ":not(."
										+ b.datepicker._currentClass + ")",
								c.dpDiv);
						h[0]
								? b.datepicker._selectDay(a.target,
										c.selectedMonth, c.selectedYear, h[0])
								: b.datepicker._hideDatepicker();
						return false;
					case 27 :
						b.datepicker._hideDatepicker();
						break;
					case 33 :
						b.datepicker._adjustDate(a.target, a.ctrlKey
										? -b.datepicker
												._get(c, "stepBigMonths")
										: -b.datepicker._get(c, "stepMonths"),
								"M");
						break;
					case 34 :
						b.datepicker._adjustDate(a.target, a.ctrlKey
										? +b.datepicker
												._get(c, "stepBigMonths")
										: +b.datepicker._get(c, "stepMonths"),
								"M");
						break;
					case 35 :
						if (a.ctrlKey || a.metaKey)
							b.datepicker._clearDate(a.target);
						h = a.ctrlKey || a.metaKey;
						break;
					case 36 :
						if (a.ctrlKey || a.metaKey)
							b.datepicker._gotoToday(a.target);
						h = a.ctrlKey || a.metaKey;
						break;
					case 37 :
						if (a.ctrlKey || a.metaKey)
							b.datepicker
									._adjustDate(a.target, i ? +1 : -1, "D");
						h = a.ctrlKey || a.metaKey;
						if (a.originalEvent.altKey)
							b.datepicker._adjustDate(a.target, a.ctrlKey
											? -b.datepicker._get(c,
													"stepBigMonths")
											: -b.datepicker._get(c,
													"stepMonths"), "M");
						break;
					case 38 :
						if (a.ctrlKey || a.metaKey)
							b.datepicker._adjustDate(a.target, -7, "D");
						h = a.ctrlKey || a.metaKey;
						break;
					case 39 :
						if (a.ctrlKey || a.metaKey)
							b.datepicker
									._adjustDate(a.target, i ? -1 : +1, "D");
						h = a.ctrlKey || a.metaKey;
						if (a.originalEvent.altKey)
							b.datepicker._adjustDate(a.target, a.ctrlKey
											? +b.datepicker._get(c,
													"stepBigMonths")
											: +b.datepicker._get(c,
													"stepMonths"), "M");
						break;
					case 40 :
						if (a.ctrlKey || a.metaKey)
							b.datepicker._adjustDate(a.target, +7, "D");
						h = a.ctrlKey || a.metaKey;
						break;
					default :
						h = false
				}
			else if (a.keyCode == 36 && a.ctrlKey)
				b.datepicker._showDatepicker(this);
			else
				h = false;
			if (h) {
				a.preventDefault();
				a.stopPropagation()
			}
		},
		_doKeyPress : function(a) {
			var c = b.datepicker._getInst(a.target);
			if (b.datepicker._get(c, "constrainInput")) {
				c = b.datepicker._possibleChars(b.datepicker._get(c,
						"dateFormat"));
				var h = String.fromCharCode(a.charCode == d
						? a.keyCode
						: a.charCode);
				return a.ctrlKey || a.metaKey || h < " " || !c
						|| c.indexOf(h) > -1
			}
		},
		_doKeyUp : function(a) {
			a = b.datepicker._getInst(a.target);
			if (a.input.val() != a.lastVal)
				try {
					if (b.datepicker.parseDate(b.datepicker._get(a,
									"dateFormat"), a.input
									? a.input.val()
									: null, b.datepicker._getFormatConfig(a))) {
						b.datepicker._setDateFromField(a);
						b.datepicker._updateAlternate(a);
						b.datepicker._updateDatepicker(a)
					}
				} catch (c) {
					b.datepicker.log(c)
				}
			return true
		},
		_showDatepicker : function(a) {
			a = a.target || a;
			if (a.nodeName.toLowerCase() != "input")
				a = b("input", a.parentNode)[0];
			if (!(b.datepicker._isDisabledDatepicker(a) || b.datepicker._lastInput == a)) {
				var c = b.datepicker._getInst(a);
				b.datepicker._curInst && b.datepicker._curInst != c
						&& b.datepicker._curInst.dpDiv.stop(true, true);
				var h = b.datepicker._get(c, "beforeShow");
				f(c.settings, h ? h.apply(a, [a, c]) : {});
				c.lastVal = null;
				b.datepicker._lastInput = a;
				b.datepicker._setDateFromField(c);
				if (b.datepicker._inDialog)
					a.value = "";
				if (!b.datepicker._pos) {
					b.datepicker._pos = b.datepicker._findPos(a);
					b.datepicker._pos[1] += a.offsetHeight
				}
				var i = false;
				b(a).parents().each(function() {
							i |= b(this).css("position") == "fixed";
							return !i
						});
				if (i && b.browser.opera) {
					b.datepicker._pos[0] -= document.documentElement.scrollLeft;
					b.datepicker._pos[1] -= document.documentElement.scrollTop
				}
				h = {
					left : b.datepicker._pos[0],
					top : b.datepicker._pos[1]
				};
				b.datepicker._pos = null;
				c.dpDiv.empty();
				c.dpDiv.css({
							position : "absolute",
							display : "block",
							top : "-1000px"
						});
				b.datepicker._updateDatepicker(c);
				h = b.datepicker._checkOffset(c, h, i);
				c.dpDiv.css({
							position : b.datepicker._inDialog && b.blockUI
									? "static"
									: i ? "fixed" : "absolute",
							display : "none",
							left : h.left + "px",
							top : h.top + "px"
						});
				if (!c.inline) {
					h = b.datepicker._get(c, "showAnim");
					var j = b.datepicker._get(c, "duration"), n = function() {
						b.datepicker._datepickerShowing = true;
						var o = c.dpDiv.find("iframe.ui-datepicker-cover");
						if (o.length) {
							var l = b.datepicker._getBorders(c.dpDiv);
							o.css({
										left : -l[0],
										top : -l[1],
										width : c.dpDiv.outerWidth(),
										height : c.dpDiv.outerHeight()
									})
						}
					};
					c.dpDiv.zIndex(b(a).zIndex() + 1);
					b.effects && b.effects[h] ? c.dpDiv.show(h, b.datepicker
									._get(c, "showOptions"), j, n) : c.dpDiv[h
							|| "show"](h ? j : null, n);
					if (!h || !j)
						n();
					c.input.is(":visible") && !c.input.is(":disabled")
							&& c.input.focus();
					b.datepicker._curInst = c
				}
			}
		},
		_updateDatepicker : function(a) {
			var c = this, h = b.datepicker._getBorders(a.dpDiv);
			a.dpDiv.empty().append(this._generateHTML(a));
			var i = a.dpDiv.find("iframe.ui-datepicker-cover");
			i.length && i.css({
						left : -h[0],
						top : -h[1],
						width : a.dpDiv.outerWidth(),
						height : a.dpDiv.outerHeight()
					});
			a.dpDiv
					.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a")
					.bind("mouseout", function() {
						b(this).removeClass("ui-state-hover");
						this.className.indexOf("ui-datepicker-prev") != -1
								&& b(this)
										.removeClass("ui-datepicker-prev-hover");
						this.className.indexOf("ui-datepicker-next") != -1
								&& b(this)
										.removeClass("ui-datepicker-next-hover")
					})
					.bind("mouseover", function() {
						if (!c._isDisabledDatepicker(a.inline ? a.dpDiv
								.parent()[0] : a.input[0])) {
							b(this).parents(".ui-datepicker-calendar")
									.find("a").removeClass("ui-state-hover");
							b(this).addClass("ui-state-hover");
							this.className.indexOf("ui-datepicker-prev") != -1
									&& b(this)
											.addClass("ui-datepicker-prev-hover");
							this.className.indexOf("ui-datepicker-next") != -1
									&& b(this)
											.addClass("ui-datepicker-next-hover")
						}
					}).end().find("." + this._dayOverClass + " a")
					.trigger("mouseover").end();
			h = this._getNumberOfMonths(a);
			i = h[1];
			i > 1
					? a.dpDiv.addClass("ui-datepicker-multi-" + i).css("width",
							17 * i + "em")
					: a.dpDiv
							.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4")
							.width("");
			a.dpDiv[(h[0] != 1 || h[1] != 1 ? "add" : "remove") + "Class"]("ui-datepicker-multi");
			a.dpDiv[(this._get(a, "isRTL") ? "add" : "remove") + "Class"]("ui-datepicker-rtl");
			a == b.datepicker._curInst && b.datepicker._datepickerShowing
					&& a.input && a.input.is(":visible")
					&& !a.input.is(":disabled")
					&& a.input[0] != document.activeElement && a.input.focus();
			if (a.yearshtml) {
				var j = a.yearshtml;
				setTimeout(function() {
							j === a.yearshtml
									&& a.dpDiv
											.find("select.ui-datepicker-year:first")
											.replaceWith(a.yearshtml);
							j = a.yearshtml = null
						}, 0)
			}
		},
		_getBorders : function(a) {
			var c = function(h) {
				return {
					thin : 1,
					medium : 2,
					thick : 3
				}[h] || h
			};
			return [parseFloat(c(a.css("border-left-width"))),
					parseFloat(c(a.css("border-top-width")))]
		},
		_checkOffset : function(a, c, h) {
			var i = a.dpDiv.outerWidth(), j = a.dpDiv.outerHeight(), n = a.input
					? a.input.outerWidth()
					: 0, o = a.input ? a.input.outerHeight() : 0, l = document.documentElement.clientWidth
					+ b(document).scrollLeft(), k = document.documentElement.clientHeight
					+ b(document).scrollTop();
			c.left -= this._get(a, "isRTL") ? i - n : 0;
			c.left -= h && c.left == a.input.offset().left ? b(document)
					.scrollLeft() : 0;
			c.top -= h && c.top == a.input.offset().top + o ? b(document)
					.scrollTop() : 0;
			c.left -= Math.min(c.left, c.left + i > l && l > i ? Math
							.abs(c.left + i - l) : 0);
			c.top -= Math.min(c.top, c.top + j > k && k > j
							? Math.abs(j + o)
							: 0);
			return c
		},
		_findPos : function(a) {
			for (var c = this._get(this._getInst(a), "isRTL"); a
					&& (a.type == "hidden" || a.nodeType != 1 || b.expr.filters
							.hidden(a));)
				a = a[c ? "previousSibling" : "nextSibling"];
			a = b(a).offset();
			return [a.left, a.top]
		},
		_hideDatepicker : function(a) {
			var c = this._curInst;
			if (!(!c || a && c != b.data(a, "datepicker")))
				if (this._datepickerShowing) {
					a = this._get(c, "showAnim");
					var h = this._get(c, "duration"), i = function() {
						b.datepicker._tidyDialog(c);
						this._curInst = null
					};
					b.effects && b.effects[a]
							? c.dpDiv.hide(a, b.datepicker._get(c,
											"showOptions"), h, i)
							: c.dpDiv[a == "slideDown"
									? "slideUp"
									: a == "fadeIn" ? "fadeOut" : "hide"](a
											? h
											: null, i);
					a || i();
					if (a = this._get(c, "onClose"))
						a.apply(c.input ? c.input[0] : null, [
										c.input ? c.input.val() : "", c]);
					this._datepickerShowing = false;
					this._lastInput = null;
					if (this._inDialog) {
						this._dialogInput.css({
									position : "absolute",
									left : "0",
									top : "-100px"
								});
						if (b.blockUI) {
							b.unblockUI();
							b("body").append(this.dpDiv)
						}
					}
					this._inDialog = false
				}
		},
		_tidyDialog : function(a) {
			a.dpDiv.removeClass(this._dialogClass)
					.unbind(".ui-datepicker-calendar")
		},
		_checkExternalClick : function(a) {
			if (b.datepicker._curInst) {
				a = b(a.target);
				a[0].id != b.datepicker._mainDivId
						&& a.parents("#" + b.datepicker._mainDivId).length == 0
						&& !a.hasClass(b.datepicker.markerClassName)
						&& !a.hasClass(b.datepicker._triggerClass)
						&& b.datepicker._datepickerShowing
						&& !(b.datepicker._inDialog && b.blockUI)
						&& b.datepicker._hideDatepicker()
			}
		},
		_adjustDate : function(a, c, h) {
			a = b(a);
			var i = this._getInst(a[0]);
			if (!this._isDisabledDatepicker(a[0])) {
				this._adjustInstDate(i, c
								+ (h == "M"
										? this._get(i, "showCurrentAtPos")
										: 0), h);
				this._updateDatepicker(i)
			}
		},
		_gotoToday : function(a) {
			a = b(a);
			var c = this._getInst(a[0]);
			if (this._get(c, "gotoCurrent") && c.currentDay) {
				c.selectedDay = c.currentDay;
				c.drawMonth = c.selectedMonth = c.currentMonth;
				c.drawYear = c.selectedYear = c.currentYear
			} else {
				var h = new Date;
				c.selectedDay = h.getDate();
				c.drawMonth = c.selectedMonth = h.getMonth();
				c.drawYear = c.selectedYear = h.getFullYear()
			}
			this._notifyChange(c);
			this._adjustDate(a)
		},
		_selectMonthYear : function(a, c, h) {
			a = b(a);
			var i = this._getInst(a[0]);
			i._selectingMonthYear = false;
			i["selected" + (h == "M" ? "Month" : "Year")] = i["draw"
					+ (h == "M" ? "Month" : "Year")] = parseInt(
					c.options[c.selectedIndex].value, 10);
			this._notifyChange(i);
			this._adjustDate(a)
		},
		_clickMonthYear : function(a) {
			var c = this._getInst(b(a)[0]);
			c.input && c._selectingMonthYear && setTimeout(function() {
						c.input.focus()
					}, 0);
			c._selectingMonthYear = !c._selectingMonthYear
		},
		_selectDay : function(a, c, h, i) {
			var j = b(a);
			if (!(b(i).hasClass(this._unselectableClass) || this
					._isDisabledDatepicker(j[0]))) {
				j = this._getInst(j[0]);
				j.selectedDay = j.currentDay = b("a", i).html();
				j.selectedMonth = j.currentMonth = c;
				j.selectedYear = j.currentYear = h;
				this._selectDate(a, this._formatDate(j, j.currentDay,
								j.currentMonth, j.currentYear))
			}
		},
		_clearDate : function(a) {
			a = b(a);
			this._getInst(a[0]);
			this._selectDate(a, "")
		},
		_selectDate : function(a, c) {
			a = this._getInst(b(a)[0]);
			c = c != null ? c : this._formatDate(a);
			a.input && a.input.val(c);
			this._updateAlternate(a);
			var h = this._get(a, "onSelect");
			if (h)
				h.apply(a.input ? a.input[0] : null, [c, a]);
			else
				a.input && a.input.trigger("change");
			if (a.inline)
				this._updateDatepicker(a);
			else {
				this._hideDatepicker();
				this._lastInput = a.input[0];
				typeof a.input[0] != "object" && a.input.focus();
				this._lastInput = null
			}
		},
		_updateAlternate : function(a) {
			var c = this._get(a, "altField");
			if (c) {
				var h = this._get(a, "altFormat") || this._get(a, "dateFormat"), i = this
						._getDate(a), j = this.formatDate(h, i, this
								._getFormatConfig(a));
				b(c).each(function() {
							b(this).val(j)
						})
			}
		},
		noWeekends : function(a) {
			a = a.getDay();
			return [a > 0 && a < 6, ""]
		},
		iso8601Week : function(a) {
			a = new Date(a.getTime());
			a.setDate(a.getDate() + 4 - (a.getDay() || 7));
			var c = a.getTime();
			a.setMonth(0);
			a.setDate(1);
			return Math.floor(Math.round((c - a) / 864E5) / 7) + 1
		},
		parseDate : function(a, c, h) {
			if (a == null || c == null)
				throw "Invalid arguments";
			c = typeof c == "object" ? c.toString() : c + "";
			if (c == "")
				return null;
			var i = (h ? h.shortYearCutoff : null)
					|| this._defaults.shortYearCutoff;
			i = typeof i != "string" ? i : (new Date).getFullYear() % 100
					+ parseInt(i, 10);
			for (var j = (h ? h.dayNamesShort : null)
					|| this._defaults.dayNamesShort, n = (h ? h.dayNames : null)
					|| this._defaults.dayNames, o = (h
					? h.monthNamesShort
					: null)
					|| this._defaults.monthNamesShort, l = (h
					? h.monthNames
					: null)
					|| this._defaults.monthNames, k = h = -1, m = -1, p = -1, q = false, s = function(
					x) {
				(x = y + 1 < a.length && a.charAt(y + 1) == x) && y++;
				return x
			}, r = function(x) {
				var C = s(x);
				x = new RegExp("^\\d{1,"
						+ (x == "@" ? 14 : x == "!" ? 20 : x == "y" && C
								? 4
								: x == "o" ? 3 : 2) + "}");
				x = c.substring(w).match(x);
				if (!x)
					throw "Missing number at position " + w;
				w += x[0].length;
				return parseInt(x[0], 10)
			}, u = function(x, C, J) {
				x = s(x) ? J : C;
				for (C = 0; C < x.length; C++)
					if (c.substr(w, x[C].length).toLowerCase() == x[C]
							.toLowerCase()) {
						w += x[C].length;
						return C + 1
					}
				throw "Unknown name at position " + w;
			}, v = function() {
				if (c.charAt(w) != a.charAt(y))
					throw "Unexpected literal at position " + w;
				w++
			}, w = 0, y = 0; y < a.length; y++)
				if (q)
					if (a.charAt(y) == "'" && !s("'"))
						q = false;
					else
						v();
				else
					switch (a.charAt(y)) {
						case "d" :
							m = r("d");
							break;
						case "D" :
							u("D", j, n);
							break;
						case "o" :
							p = r("o");
							break;
						case "m" :
							k = r("m");
							break;
						case "M" :
							k = u("M", o, l);
							break;
						case "y" :
							h = r("y");
							break;
						case "@" :
							var B = new Date(r("@"));
							h = B.getFullYear();
							k = B.getMonth() + 1;
							m = B.getDate();
							break;
						case "!" :
							B = new Date((r("!") - this._ticksTo1970) / 1E4);
							h = B.getFullYear();
							k = B.getMonth() + 1;
							m = B.getDate();
							break;
						case "'" :
							if (s("'"))
								v();
							else
								q = true;
							break;
						default :
							v()
					}
			if (h == -1)
				h = (new Date).getFullYear();
			else if (h < 100)
				h += (new Date).getFullYear() - (new Date).getFullYear() % 100
						+ (h <= i ? 0 : -100);
			if (p > -1) {
				k = 1;
				m = p;
				do {
					i = this._getDaysInMonth(h, k - 1);
					if (m <= i)
						break;
					k++;
					m -= i
				} while (1)
			}
			B = this._daylightSavingAdjust(new Date(h, k - 1, m));
			if (B.getFullYear() != h || B.getMonth() + 1 != k
					|| B.getDate() != m)
				throw "Invalid date";
			return B
		},
		ATOM : "yy-mm-dd",
		COOKIE : "D, dd M yy",
		ISO_8601 : "yy-mm-dd",
		RFC_822 : "D, d M y",
		RFC_850 : "DD, dd-M-y",
		RFC_1036 : "D, d M y",
		RFC_1123 : "D, d M yy",
		RFC_2822 : "D, d M yy",
		RSS : "D, d M y",
		TICKS : "!",
		TIMESTAMP : "@",
		W3C : "yy-mm-dd",
		_ticksTo1970 : (718685 + Math.floor(492.5) - Math.floor(19.7) + Math
				.floor(4.925))
				* 24 * 60 * 60 * 1E7,
		formatDate : function(a, c, h) {
			if (!c)
				return "";
			var i = (h ? h.dayNamesShort : null)
					|| this._defaults.dayNamesShort, j = (h ? h.dayNames : null)
					|| this._defaults.dayNames, n = (h
					? h.monthNamesShort
					: null)
					|| this._defaults.monthNamesShort;
			h = (h ? h.monthNames : null) || this._defaults.monthNames;
			var o = function(s) {
				(s = q + 1 < a.length && a.charAt(q + 1) == s) && q++;
				return s
			}, l = function(s, r, u) {
				r = "" + r;
				if (o(s))
					for (; r.length < u;)
						r = "0" + r;
				return r
			}, k = function(s, r, u, v) {
				return o(s) ? v[r] : u[r]
			}, m = "", p = false;
			if (c)
				for (var q = 0; q < a.length; q++)
					if (p)
						if (a.charAt(q) == "'" && !o("'"))
							p = false;
						else
							m += a.charAt(q);
					else
						switch (a.charAt(q)) {
							case "d" :
								m += l("d", c.getDate(), 2);
								break;
							case "D" :
								m += k("D", c.getDay(), i, j);
								break;
							case "o" :
								m += l("o", (c.getTime() - (new Date(c
														.getFullYear(), 0, 0))
												.getTime())
												/ 864E5, 3);
								break;
							case "m" :
								m += l("m", c.getMonth() + 1, 2);
								break;
							case "M" :
								m += k("M", c.getMonth(), n, h);
								break;
							case "y" :
								m += o("y") ? c.getFullYear() : (c.getYear()
										% 100 < 10 ? "0" : "")
										+ c.getYear() % 100;
								break;
							case "@" :
								m += c.getTime();
								break;
							case "!" :
								m += c.getTime() * 1E4 + this._ticksTo1970;
								break;
							case "'" :
								if (o("'"))
									m += "'";
								else
									p = true;
								break;
							default :
								m += a.charAt(q)
						}
			return m
		},
		_possibleChars : function(a) {
			for (var c = "", h = false, i = function(n) {
				(n = j + 1 < a.length && a.charAt(j + 1) == n) && j++;
				return n
			}, j = 0; j < a.length; j++)
				if (h)
					if (a.charAt(j) == "'" && !i("'"))
						h = false;
					else
						c += a.charAt(j);
				else
					switch (a.charAt(j)) {
						case "d" :
						case "m" :
						case "y" :
						case "@" :
							c += "0123456789";
							break;
						case "D" :
						case "M" :
							return null;
						case "'" :
							if (i("'"))
								c += "'";
							else
								h = true;
							break;
						default :
							c += a.charAt(j)
					}
			return c
		},
		_get : function(a, c) {
			return a.settings[c] !== d ? a.settings[c] : this._defaults[c]
		},
		_setDateFromField : function(a, c) {
			if (a.input.val() != a.lastVal) {
				var h = this._get(a, "dateFormat"), i = a.lastVal = a.input
						? a.input.val()
						: null, j, n;
				j = n = this._getDefaultDate(a);
				var o = this._getFormatConfig(a);
				try {
					j = this.parseDate(h, i, o) || n
				} catch (l) {
					this.log(l);
					i = c ? "" : i
				}
				a.selectedDay = j.getDate();
				a.drawMonth = a.selectedMonth = j.getMonth();
				a.drawYear = a.selectedYear = j.getFullYear();
				a.currentDay = i ? j.getDate() : 0;
				a.currentMonth = i ? j.getMonth() : 0;
				a.currentYear = i ? j.getFullYear() : 0;
				this._adjustInstDate(a)
			}
		},
		_getDefaultDate : function(a) {
			return this._restrictMinMax(a, this._determineDate(a, this._get(a,
									"defaultDate"), new Date))
		},
		_determineDate : function(a, c, h) {
			var i = function(n) {
				var o = new Date;
				o.setDate(o.getDate() + n);
				return o
			}, j = function(n) {
				try {
					return b.datepicker.parseDate(b.datepicker._get(a,
									"dateFormat"), n, b.datepicker
									._getFormatConfig(a))
				} catch (o) {
				}
				var l = (n.toLowerCase().match(/^c/)
						? b.datepicker._getDate(a)
						: null)
						|| new Date, k = l.getFullYear(), m = l.getMonth();
				l = l.getDate();
				for (var p = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, q = p
						.exec(n); q;) {
					switch (q[2] || "d") {
						case "d" :
						case "D" :
							l += parseInt(q[1], 10);
							break;
						case "w" :
						case "W" :
							l += parseInt(q[1], 10) * 7;
							break;
						case "m" :
						case "M" :
							m += parseInt(q[1], 10);
							l = Math.min(l, b.datepicker._getDaysInMonth(k, m));
							break;
						case "y" :
						case "Y" :
							k += parseInt(q[1], 10);
							l = Math.min(l, b.datepicker._getDaysInMonth(k, m));
							break
					}
					q = p.exec(n)
				}
				return new Date(k, m, l)
			};
			if (c = (c = c == null || c === "" ? h : typeof c == "string"
					? j(c)
					: typeof c == "number" ? isNaN(c) ? h : i(c) : new Date(c
							.getTime()))
					&& c.toString() == "Invalid Date" ? h : c) {
				c.setHours(0);
				c.setMinutes(0);
				c.setSeconds(0);
				c.setMilliseconds(0)
			}
			return this._daylightSavingAdjust(c)
		},
		_daylightSavingAdjust : function(a) {
			if (!a)
				return null;
			a.setHours(a.getHours() > 12 ? a.getHours() + 2 : 0);
			return a
		},
		_setDate : function(a, c, h) {
			var i = !c, j = a.selectedMonth, n = a.selectedYear;
			c = this._restrictMinMax(a, this._determineDate(a, c, new Date));
			a.selectedDay = a.currentDay = c.getDate();
			a.drawMonth = a.selectedMonth = a.currentMonth = c.getMonth();
			a.drawYear = a.selectedYear = a.currentYear = c.getFullYear();
			if ((j != a.selectedMonth || n != a.selectedYear) && !h)
				this._notifyChange(a);
			this._adjustInstDate(a);
			if (a.input)
				a.input.val(i ? "" : this._formatDate(a))
		},
		_getDate : function(a) {
			return !a.currentYear || a.input && a.input.val() == ""
					? null
					: this._daylightSavingAdjust(new Date(a.currentYear,
							a.currentMonth, a.currentDay))
		},
		_generateHTML : function(a) {
			var c = new Date;
			c = this._daylightSavingAdjust(new Date(c.getFullYear(), c
							.getMonth(), c.getDate()));
			var h = this._get(a, "isRTL"), i = this._get(a, "showButtonPanel"), j = this
					._get(a, "hideIfNoPrevNext"), n = this._get(a,
					"navigationAsDateFormat"), o = this._getNumberOfMonths(a), l = this
					._get(a, "showCurrentAtPos"), k = this
					._get(a, "stepMonths"), m = o[0] != 1 || o[1] != 1, p = this
					._daylightSavingAdjust(!a.currentDay
							? new Date(9999, 9, 9)
							: new Date(a.currentYear, a.currentMonth,
									a.currentDay)), q = this._getMinMaxDate(a,
					"min"), s = this._getMinMaxDate(a, "max");
			l = a.drawMonth - l;
			var r = a.drawYear;
			if (l < 0) {
				l += 12;
				r--
			}
			if (s) {
				var u = this._daylightSavingAdjust(new Date(s.getFullYear(), s
								.getMonth()
								- o[0] * o[1] + 1, s.getDate()));
				for (u = q && u < q ? q : u; this
						._daylightSavingAdjust(new Date(r, l, 1)) > u;) {
					l--;
					if (l < 0) {
						l = 11;
						r--
					}
				}
			}
			a.drawMonth = l;
			a.drawYear = r;
			u = this._get(a, "prevText");
			u = !n ? u : this.formatDate(u, this
							._daylightSavingAdjust(new Date(r, l - k, 1)), this
							._getFormatConfig(a));
			u = this._canAdjustMonth(a, -1, r, l)
					? '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'
							+ g
							+ ".datepicker._adjustDate('#"
							+ a.id
							+ "', -"
							+ k
							+ ", 'M');\" title=\""
							+ u
							+ '"><span class="ui-icon ui-icon-circle-triangle-'
							+ (h ? "e" : "w") + '">' + u + "</span></a>"
					: j
							? ""
							: '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'
									+ u
									+ '"><span class="ui-icon ui-icon-circle-triangle-'
									+ (h ? "e" : "w")
									+ '">'
									+ u
									+ "</span></a>";
			var v = this._get(a, "nextText");
			v = !n ? v : this.formatDate(v, this
							._daylightSavingAdjust(new Date(r, l + k, 1)), this
							._getFormatConfig(a));
			j = this._canAdjustMonth(a, +1, r, l)
					? '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'
							+ g
							+ ".datepicker._adjustDate('#"
							+ a.id
							+ "', +"
							+ k
							+ ", 'M');\" title=\""
							+ v
							+ '"><span class="ui-icon ui-icon-circle-triangle-'
							+ (h ? "w" : "e") + '">' + v + "</span></a>"
					: j
							? ""
							: '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'
									+ v
									+ '"><span class="ui-icon ui-icon-circle-triangle-'
									+ (h ? "w" : "e")
									+ '">'
									+ v
									+ "</span></a>";
			k = this._get(a, "currentText");
			v = this._get(a, "gotoCurrent") && a.currentDay ? p : c;
			k = !n ? k : this.formatDate(k, v, this._getFormatConfig(a));
			n = !a.inline
					? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'
							+ g
							+ '.datepicker._hideDatepicker();">'
							+ this._get(a, "closeText") + "</button>"
					: "";
			i = i
					? '<div class="ui-datepicker-buttonpane ui-widget-content">'
							+ (h ? n : "")
							+ (this._isInRange(a, v)
									? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'
											+ g
											+ ".datepicker._gotoToday('#"
											+ a.id + "');\">" + k + "</button>"
									: "") + (h ? "" : n) + "</div>"
					: "";
			n = parseInt(this._get(a, "firstDay"), 10);
			n = isNaN(n) ? 0 : n;
			k = this._get(a, "showWeek");
			v = this._get(a, "dayNames");
			this._get(a, "dayNamesShort");
			var w = this._get(a, "dayNamesMin"), y = this._get(a, "monthNames"), B = this
					._get(a, "monthNamesShort"), x = this._get(a,
					"beforeShowDay"), C = this._get(a, "showOtherMonths"), J = this
					._get(a, "selectOtherMonths");
			this._get(a, "calculateWeek");
			for (var M = this._getDefaultDate(a), K = "", G = 0; G < o[0]; G++) {
				for (var N = "", H = 0; H < o[1]; H++) {
					var O = this._daylightSavingAdjust(new Date(r, l,
							a.selectedDay)), A = " ui-corner-all", D = "";
					if (m) {
						D += '<div class="ui-datepicker-group';
						if (o[1] > 1)
							switch (H) {
								case 0 :
									D += " ui-datepicker-group-first";
									A = " ui-corner-" + (h ? "right" : "left");
									break;
								case o[1] - 1 :
									D += " ui-datepicker-group-last";
									A = " ui-corner-" + (h ? "left" : "right");
									break;
								default :
									D += " ui-datepicker-group-middle";
									A = "";
									break
							}
						D += '">'
					}
					D += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'
							+ A
							+ '">'
							+ (/all|left/.test(A) && G == 0 ? h ? j : u : "")
							+ (/all|right/.test(A) && G == 0 ? h ? u : j : "")
							+ this._generateMonthYearHeader(a, l, r, q, s,
									G > 0 || H > 0, y, B)
							+ '</div><table class="ui-datepicker-calendar"><thead><tr>';
					var E = k ? '<th class="ui-datepicker-week-col">'
							+ this._get(a, "weekHeader") + "</th>" : "";
					for (A = 0; A < 7; A++) {
						var z = (A + n) % 7;
						E += "<th"
								+ ((A + n + 6) % 7 >= 5
										? ' class="ui-datepicker-week-end"'
										: "") + '><span title="' + v[z] + '">'
								+ w[z] + "</span></th>"
					}
					D += E + "</tr></thead><tbody>";
					E = this._getDaysInMonth(r, l);
					if (r == a.selectedYear && l == a.selectedMonth)
						a.selectedDay = Math.min(a.selectedDay, E);
					A = (this._getFirstDayOfMonth(r, l) - n + 7) % 7;
					E = m ? 6 : Math.ceil((A + E) / 7);
					z = this._daylightSavingAdjust(new Date(r, l, 1 - A));
					for (var P = 0; P < E; P++) {
						D += "<tr>";
						var Q = !k ? "" : '<td class="ui-datepicker-week-col">'
								+ this._get(a, "calculateWeek")(z) + "</td>";
						for (A = 0; A < 7; A++) {
							var I = x ? x.apply(a.input ? a.input[0] : null,
									[z]) : [true, ""], F = z.getMonth() != l, L = F
									&& !J || !I[0] || q && z < q || s && z > s;
							Q += '<td class="'
									+ ((A + n + 6) % 7 >= 5
											? " ui-datepicker-week-end"
											: "")
									+ (F ? " ui-datepicker-other-month" : "")
									+ (z.getTime() == O.getTime()
											&& l == a.selectedMonth
											&& a._keyEvent
											|| M.getTime() == z.getTime()
											&& M.getTime() == O.getTime() ? " "
											+ this._dayOverClass : "")
									+ (L ? " " + this._unselectableClass
											+ " ui-state-disabled" : "")
									+ (F && !C ? "" : " "
											+ I[1]
											+ (z.getTime() == p.getTime() ? " "
													+ this._currentClass : "")
											+ (z.getTime() == c.getTime()
													? " ui-datepicker-today"
													: ""))
									+ '"'
									+ ((!F || C) && I[2] ? ' title="' + I[2]
											+ '"' : "")
									+ (L ? "" : ' onclick="DP_jQuery_' + g
											+ ".datepicker._selectDay('#"
											+ a.id + "'," + z.getMonth() + ","
											+ z.getFullYear()
											+ ', this);return false;"')
									+ ">"
									+ (F && !C
											? "&#xa0;"
											: L
													? '<span class="ui-state-default">'
															+ z.getDate()
															+ "</span>"
													: '<a class="ui-state-default'
															+ (z.getTime() == c
																	.getTime()
																	? " ui-state-highlight"
																	: "")
															+ (z.getTime() == p
																	.getTime()
																	? " ui-state-active"
																	: "")
															+ (F
																	? " ui-priority-secondary"
																	: "")
															+ '" href="#">'
															+ z.getDate()
															+ "</a>") + "</td>";
							z.setDate(z.getDate() + 1);
							z = this._daylightSavingAdjust(z)
						}
						D += Q + "</tr>"
					}
					l++;
					if (l > 11) {
						l = 0;
						r++
					}
					D += "</tbody></table>"
							+ (m
									? "</div>"
											+ (o[0] > 0 && H == o[1] - 1
													? '<div class="ui-datepicker-row-break"></div>'
													: "")
									: "");
					N += D
				}
				K += N
			}
			K += i
					+ (b.browser.msie && parseInt(b.browser.version, 10) < 7
							&& !a.inline
							? '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>'
							: "");
			a._keyEvent = false;
			return K
		},
		_generateMonthYearHeader : function(a, c, h, i, j, n, o, l) {
			var k = this._get(a, "changeMonth"), m = this._get(a, "changeYear"), p = this
					._get(a, "showMonthAfterYear"), q = '<div class="ui-datepicker-title">', s = "";
			if (n || !k)
				s += '<span class="ui-datepicker-month">' + o[c] + "</span>";
			else {
				o = i && i.getFullYear() == h;
				var r = j && j.getFullYear() == h;
				s += '<select class="ui-datepicker-month" onchange="DP_jQuery_'
						+ g + ".datepicker._selectMonthYear('#" + a.id
						+ "', this, 'M');\" onclick=\"DP_jQuery_" + g
						+ ".datepicker._clickMonthYear('#" + a.id + "');\">";
				for (var u = 0; u < 12; u++)
					if ((!o || u >= i.getMonth()) && (!r || u <= j.getMonth()))
						s += '<option value="' + u + '"'
								+ (u == c ? ' selected="selected"' : "") + ">"
								+ l[u] + "</option>";
				s += "</select>"
			}
			p || (q += s + (n || !(k && m) ? "&#xa0;" : ""));
			if (!a.yearshtml) {
				a.yearshtml = "";
				if (n || !m)
					q += '<span class="ui-datepicker-year">' + h + "</span>";
				else {
					l = this._get(a, "yearRange").split(":");
					var v = (new Date).getFullYear();
					o = function(w) {
						w = w.match(/c[+-].*/) ? h
								+ parseInt(w.substring(1), 10) : w
								.match(/[+-].*/)
								? v + parseInt(w, 10)
								: parseInt(w, 10);
						return isNaN(w) ? v : w
					};
					c = o(l[0]);
					l = Math.max(c, o(l[1] || ""));
					c = i ? Math.max(c, i.getFullYear()) : c;
					l = j ? Math.min(l, j.getFullYear()) : l;
					for (a.yearshtml += '<select class="ui-datepicker-year" onchange="DP_jQuery_'
							+ g
							+ ".datepicker._selectMonthYear('#"
							+ a.id
							+ "', this, 'Y');\" onclick=\"DP_jQuery_"
							+ g
							+ ".datepicker._clickMonthYear('#"
							+ a.id
							+ "');\">"; c <= l; c++)
						a.yearshtml += '<option value="' + c + '"'
								+ (c == h ? ' selected="selected"' : "") + ">"
								+ c + "</option>";
					a.yearshtml += "</select>";
					if (b.browser.mozilla)
						q += '<select class="ui-datepicker-year"><option value="'
								+ h
								+ '" selected="selected">'
								+ h
								+ "</option></select>";
					else {
						q += a.yearshtml;
						a.yearshtml = null
					}
				}
			}
			q += this._get(a, "yearSuffix");
			if (p)
				q += (n || !(k && m) ? "&#xa0;" : "") + s;
			q += "</div>";
			return q
		},
		_adjustInstDate : function(a, c, h) {
			var i = a.drawYear + (h == "Y" ? c : 0), j = a.drawMonth
					+ (h == "M" ? c : 0);
			c = Math.min(a.selectedDay, this._getDaysInMonth(i, j))
					+ (h == "D" ? c : 0);
			i = this._restrictMinMax(a, this._daylightSavingAdjust(new Date(i,
							j, c)));
			a.selectedDay = i.getDate();
			a.drawMonth = a.selectedMonth = i.getMonth();
			a.drawYear = a.selectedYear = i.getFullYear();
			if (h == "M" || h == "Y")
				this._notifyChange(a)
		},
		_restrictMinMax : function(a, c) {
			var h = this._getMinMaxDate(a, "min");
			a = this._getMinMaxDate(a, "max");
			c = h && c < h ? h : c;
			return c = a && c > a ? a : c
		},
		_notifyChange : function(a) {
			var c = this._get(a, "onChangeMonthYear");
			if (c)
				c.apply(a.input ? a.input[0] : null, [a.selectedYear,
								a.selectedMonth + 1, a])
		},
		_getNumberOfMonths : function(a) {
			a = this._get(a, "numberOfMonths");
			return a == null ? [1, 1] : typeof a == "number" ? [1, a] : a
		},
		_getMinMaxDate : function(a, c) {
			return this._determineDate(a, this._get(a, c + "Date"), null)
		},
		_getDaysInMonth : function(a, c) {
			return 32
					- this._daylightSavingAdjust(new Date(a, c, 32)).getDate()
		},
		_getFirstDayOfMonth : function(a, c) {
			return (new Date(a, c, 1)).getDay()
		},
		_canAdjustMonth : function(a, c, h, i) {
			var j = this._getNumberOfMonths(a);
			h = this._daylightSavingAdjust(new Date(h, i
							+ (c < 0 ? c : j[0] * j[1]), 1));
			c < 0
					&& h.setDate(this._getDaysInMonth(h.getFullYear(), h
									.getMonth()));
			return this._isInRange(a, h)
		},
		_isInRange : function(a, c) {
			var h = this._getMinMaxDate(a, "min");
			a = this._getMinMaxDate(a, "max");
			return (!h || c.getTime() >= h.getTime())
					&& (!a || c.getTime() <= a.getTime())
		},
		_getFormatConfig : function(a) {
			var c = this._get(a, "shortYearCutoff");
			c = typeof c != "string" ? c : (new Date).getFullYear() % 100
					+ parseInt(c, 10);
			return {
				shortYearCutoff : c,
				dayNamesShort : this._get(a, "dayNamesShort"),
				dayNames : this._get(a, "dayNames"),
				monthNamesShort : this._get(a, "monthNamesShort"),
				monthNames : this._get(a, "monthNames")
			}
		},
		_formatDate : function(a, c, h, i) {
			if (!c) {
				a.currentDay = a.selectedDay;
				a.currentMonth = a.selectedMonth;
				a.currentYear = a.selectedYear
			}
			c = c ? typeof c == "object" ? c : this
					._daylightSavingAdjust(new Date(i, h, c)) : this
					._daylightSavingAdjust(new Date(a.currentYear,
							a.currentMonth, a.currentDay));
			return this.formatDate(this._get(a, "dateFormat"), c, this
							._getFormatConfig(a))
		}
	});
	b.fn.datepicker = function(a) {
		if (!this.length)
			return this;
		if (!b.datepicker.initialized) {
			b(document).mousedown(b.datepicker._checkExternalClick)
					.find("body").append(b.datepicker.dpDiv);
			b.datepicker.initialized = true
		}
		var c = Array.prototype.slice.call(arguments, 1);
		if (typeof a == "string"
				&& (a == "isDisabled" || a == "getDate" || a == "widget"))
			return b.datepicker["_" + a + "Datepicker"].apply(b.datepicker,
					[this[0]].concat(c));
		if (a == "option" && arguments.length == 2
				&& typeof arguments[1] == "string")
			return b.datepicker["_" + a + "Datepicker"].apply(b.datepicker,
					[this[0]].concat(c));
		return this.each(function() {
					typeof a == "string"
							? b.datepicker["_" + a + "Datepicker"].apply(
									b.datepicker, [this].concat(c))
							: b.datepicker._attachDatepicker(this, a)
				})
	};
	b.datepicker = new e;
	b.datepicker.initialized = false;
	b.datepicker.uuid = (new Date).getTime();
	b.datepicker.version = "1.8.12";
	window["DP_jQuery_" + g] = b
})(jQuery);
(function(b, d) {
	var e = {
		buttons : true,
		height : true,
		maxHeight : true,
		maxWidth : true,
		minHeight : true,
		minWidth : true,
		width : true
	}, f = {
		maxHeight : true,
		maxWidth : true,
		minHeight : true,
		minWidth : true
	}, g = b.attrFn || {
		val : true,
		css : true,
		html : true,
		text : true,
		data : true,
		width : true,
		height : true,
		offset : true,
		click : true
	};
	b.widget("ui.dialog", {
		options : {
			autoOpen : true,
			buttons : {},
			closeOnEscape : true,
			closeText : "close",
			dialogClass : "",
			draggable : true,
			hide : null,
			height : "auto",
			maxHeight : false,
			maxWidth : false,
			minHeight : 150,
			minWidth : 150,
			modal : false,
			position : {
				my : "center",
				at : "center",
				collision : "fit",
				using : function(a) {
					var c = b(this).css(a).offset().top;
					c < 0 && b(this).css("top", a.top - c)
				}
			},
			resizable : true,
			show : null,
			stack : true,
			title : "",
			width : 300,
			zIndex : 1E3
		},
		_create : function() {
			this.originalTitle = this.element.attr("title");
			if (typeof this.originalTitle !== "string")
				this.originalTitle = "";
			this.options.title = this.options.title || this.originalTitle;
			var a = this, c = a.options, h = c.title || "&#160;", i = b.ui.dialog
					.getTitleId(a.element), j = (a.uiDialog = b("<div></div>"))
					.appendTo(document.body)
					.hide()
					.addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "
							+ c.dialogClass).css({
								zIndex : c.zIndex
							}).attr("tabIndex", -1).css("outline", 0).keydown(
							function(l) {
								if (c.closeOnEscape && l.keyCode
										&& l.keyCode === b.ui.keyCode.ESCAPE) {
									a.close(l);
									l.preventDefault()
								}
							}).attr({
								role : "dialog",
								"aria-labelledby" : i
							}).mousedown(function(l) {
								a.moveToTop(false, l)
							});
			a.element.show().removeAttr("title")
					.addClass("ui-dialog-content ui-widget-content")
					.appendTo(j);
			var n = (a.uiDialogTitlebar = b("<div></div>"))
					.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
					.prependTo(j), o = b('<a href="#"></a>')
					.addClass("ui-dialog-titlebar-close ui-corner-all").attr(
							"role", "button").hover(function() {
								o.addClass("ui-state-hover")
							}, function() {
								o.removeClass("ui-state-hover")
							}).focus(function() {
								o.addClass("ui-state-focus")
							}).blur(function() {
								o.removeClass("ui-state-focus")
							}).click(function(l) {
								a.close(l);
								return false
							}).appendTo(n);
			(a.uiDialogTitlebarCloseText = b("<span></span>"))
					.addClass("ui-icon ui-icon-closethick").text(c.closeText)
					.appendTo(o);
			b("<span></span>").addClass("ui-dialog-title").attr("id", i)
					.html(h).prependTo(n);
			if (b.isFunction(c.beforeclose) && !b.isFunction(c.beforeClose))
				c.beforeClose = c.beforeclose;
			n.find("*").add(n).disableSelection();
			c.draggable && b.fn.draggable && a._makeDraggable();
			c.resizable && b.fn.resizable && a._makeResizable();
			a._createButtons(c.buttons);
			a._isOpen = false;
			b.fn.bgiframe && j.bgiframe()
		},
		_init : function() {
			this.options.autoOpen && this.open()
		},
		destroy : function() {
			var a = this;
			a.overlay && a.overlay.destroy();
			a.uiDialog.hide();
			a.element.unbind(".dialog").removeData("dialog")
					.removeClass("ui-dialog-content ui-widget-content").hide()
					.appendTo("body");
			a.uiDialog.remove();
			a.originalTitle && a.element.attr("title", a.originalTitle);
			return a
		},
		widget : function() {
			return this.uiDialog
		},
		close : function(a) {
			var c = this, h, i;
			if (false !== c._trigger("beforeClose", a)) {
				c.overlay && c.overlay.destroy();
				c.uiDialog.unbind("keypress.ui-dialog");
				c._isOpen = false;
				if (c.options.hide)
					c.uiDialog.hide(c.options.hide, function() {
								c._trigger("close", a)
							});
				else {
					c.uiDialog.hide();
					c._trigger("close", a)
				}
				b.ui.dialog.overlay.resize();
				if (c.options.modal) {
					h = 0;
					b(".ui-dialog").each(function() {
								if (this !== c.uiDialog[0]) {
									i = b(this).css("z-index");
									isNaN(i) || (h = Math.max(h, i))
								}
							});
					b.ui.dialog.maxZ = h
				}
				return c
			}
		},
		isOpen : function() {
			return this._isOpen
		},
		moveToTop : function(a, c) {
			var h = this, i = h.options;
			if (i.modal && !a || !i.stack && !i.modal)
				return h._trigger("focus", c);
			if (i.zIndex > b.ui.dialog.maxZ)
				b.ui.dialog.maxZ = i.zIndex;
			if (h.overlay) {
				b.ui.dialog.maxZ += 1;
				h.overlay.$el.css("z-index",
						b.ui.dialog.overlay.maxZ = b.ui.dialog.maxZ)
			}
			a = {
				scrollTop : h.element.attr("scrollTop"),
				scrollLeft : h.element.attr("scrollLeft")
			};
			b.ui.dialog.maxZ += 1;
			h.uiDialog.css("z-index", b.ui.dialog.maxZ);
			h.element.attr(a);
			h._trigger("focus", c);
			return h
		},
		open : function() {
			if (!this._isOpen) {
				var a = this, c = a.options, h = a.uiDialog;
				a.overlay = c.modal ? new b.ui.dialog.overlay(a) : null;
				a._size();
				a._position(c.position);
				h.show(c.show);
				a.moveToTop(true);
				c.modal && h.bind("keypress.ui-dialog", function(i) {
							if (i.keyCode === b.ui.keyCode.TAB) {
								var j = b(":tabbable", this), n = j
										.filter(":first");
								j = j.filter(":last");
								if (i.target === j[0] && !i.shiftKey) {
									n.focus(1);
									return false
								} else if (i.target === n[0] && i.shiftKey) {
									j.focus(1);
									return false
								}
							}
						});
				b(a.element.find(":tabbable").get().concat(h
						.find(".ui-dialog-buttonpane :tabbable").get().concat(h
								.get()))).eq(0).focus();
				a._isOpen = true;
				a._trigger("open");
				return a
			}
		},
		_createButtons : function(a) {
			var c = this, h = false, i = b("<div></div>")
					.addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"), j = b("<div></div>")
					.addClass("ui-dialog-buttonset").appendTo(i);
			c.uiDialog.find(".ui-dialog-buttonpane").remove();
			typeof a === "object" && a !== null && b.each(a, function() {
						return !(h = true)
					});
			if (h) {
				b.each(a, function(n, o) {
							o = b.isFunction(o) ? {
								click : o,
								text : n
							} : o;
							var l = b('<button type="button"></button>').click(
									function() {
										o.click.apply(c.element[0], arguments)
									}).appendTo(j);
							b.each(o, function(k, m) {
										if (k !== "click")
											k in g ? l[k](m) : l.attr(k, m)
									});
							b.fn.button && l.button()
						});
				i.appendTo(c.uiDialog)
			}
		},
		_makeDraggable : function() {
			function a(n) {
				return {
					position : n.position,
					offset : n.offset
				}
			}
			var c = this, h = c.options, i = b(document), j;
			c.uiDialog.draggable({
						cancel : ".ui-dialog-content, .ui-dialog-titlebar-close",
						handle : ".ui-dialog-titlebar",
						containment : "document",
						start : function(n, o) {
							j = h.height === "auto" ? "auto" : b(this).height();
							b(this).height(b(this).height())
									.addClass("ui-dialog-dragging");
							c._trigger("dragStart", n, a(o))
						},
						drag : function(n, o) {
							c._trigger("drag", n, a(o))
						},
						stop : function(n, o) {
							h.position = [o.position.left - i.scrollLeft(),
									o.position.top - i.scrollTop()];
							b(this).removeClass("ui-dialog-dragging").height(j);
							c._trigger("dragStop", n, a(o));
							b.ui.dialog.overlay.resize()
						}
					})
		},
		_makeResizable : function(a) {
			function c(n) {
				return {
					originalPosition : n.originalPosition,
					originalSize : n.originalSize,
					position : n.position,
					size : n.size
				}
			}
			a = a === d ? this.options.resizable : a;
			var h = this, i = h.options, j = h.uiDialog.css("position");
			a = typeof a === "string" ? a : "n,e,s,w,se,sw,ne,nw";
			h.uiDialog.resizable({
						cancel : ".ui-dialog-content",
						containment : "document",
						alsoResize : h.element,
						maxWidth : i.maxWidth,
						maxHeight : i.maxHeight,
						minWidth : i.minWidth,
						minHeight : h._minHeight(),
						handles : a,
						start : function(n, o) {
							b(this).addClass("ui-dialog-resizing");
							h._trigger("resizeStart", n, c(o))
						},
						resize : function(n, o) {
							h._trigger("resize", n, c(o))
						},
						stop : function(n, o) {
							b(this).removeClass("ui-dialog-resizing");
							i.height = b(this).height();
							i.width = b(this).width();
							h._trigger("resizeStop", n, c(o));
							b.ui.dialog.overlay.resize()
						}
					}).css("position", j).find(".ui-resizable-se")
					.addClass("ui-icon ui-icon-grip-diagonal-se")
		},
		_minHeight : function() {
			var a = this.options;
			return a.height === "auto" ? a.minHeight : Math.min(a.minHeight,
					a.height)
		},
		_position : function(a) {
			var c = [], h = [0, 0], i;
			if (a) {
				if (typeof a === "string" || typeof a === "object" && "0" in a) {
					c = a.split ? a.split(" ") : [a[0], a[1]];
					if (c.length === 1)
						c[1] = c[0];
					b.each(["left", "top"], function(j, n) {
								if (+c[j] === c[j]) {
									h[j] = c[j];
									c[j] = n
								}
							});
					a = {
						my : c.join(" "),
						at : c.join(" "),
						offset : h.join(" ")
					}
				}
				a = b.extend({}, b.ui.dialog.prototype.options.position, a)
			} else
				a = b.ui.dialog.prototype.options.position;
			(i = this.uiDialog.is(":visible")) || this.uiDialog.show();
			this.uiDialog.css({
						top : 0,
						left : 0
					}).position(b.extend({
						of : window
					}, a));
			i || this.uiDialog.hide()
		},
		_setOptions : function(a) {
			var c = this, h = {}, i = false;
			b.each(a, function(j, n) {
						c._setOption(j, n);
						if (j in e)
							i = true;
						if (j in f)
							h[j] = n
					});
			i && this._size();
			this.uiDialog.is(":data(resizable)")
					&& this.uiDialog.resizable("option", h)
		},
		_setOption : function(a, c) {
			var h = this, i = h.uiDialog;
			switch (a) {
				case "beforeclose" :
					a = "beforeClose";
					break;
				case "buttons" :
					h._createButtons(c);
					break;
				case "closeText" :
					h.uiDialogTitlebarCloseText.text("" + c);
					break;
				case "dialogClass" :
					i
							.removeClass(h.options.dialogClass)
							.addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "
									+ c);
					break;
				case "disabled" :
					c ? i.addClass("ui-dialog-disabled") : i
							.removeClass("ui-dialog-disabled");
					break;
				case "draggable" :
					var j = i.is(":data(draggable)");
					j && !c && i.draggable("destroy");
					!j && c && h._makeDraggable();
					break;
				case "position" :
					h._position(c);
					break;
				case "resizable" :
					(j = i.is(":data(resizable)")) && !c
							&& i.resizable("destroy");
					j && typeof c === "string"
							&& i.resizable("option", "handles", c);
					!j && c !== false && h._makeResizable(c);
					break;
				case "title" :
					b(".ui-dialog-title", h.uiDialogTitlebar).html(""
							+ (c || "&#160;"));
					break
			}
			b.Widget.prototype._setOption.apply(h, arguments)
		},
		_size : function() {
			var a = this.options, c, h, i = this.uiDialog.is(":visible");
			this.element.show().css({
						width : "auto",
						minHeight : 0,
						height : 0
					});
			if (a.minWidth > a.width)
				a.width = a.minWidth;
			c = this.uiDialog.css({
						height : "auto",
						width : a.width
					}).height();
			h = Math.max(0, a.minHeight - c);
			if (a.height === "auto")
				if (b.support.minHeight)
					this.element.css({
								minHeight : h,
								height : "auto"
							});
				else {
					this.uiDialog.show();
					a = this.element.css("height", "auto").height();
					i || this.uiDialog.hide();
					this.element.height(Math.max(a, h))
				}
			else
				this.element.height(Math.max(a.height - c, 0));
			this.uiDialog.is(":data(resizable)")
					&& this.uiDialog.resizable("option", "minHeight", this
									._minHeight())
		}
	});
	b.extend(b.ui.dialog, {
				version : "1.8.12",
				uuid : 0,
				maxZ : 0,
				getTitleId : function(a) {
					a = a.attr("id");
					if (!a) {
						this.uuid += 1;
						a = this.uuid
					}
					return "ui-dialog-title-" + a
				},
				overlay : function(a) {
					this.$el = b.ui.dialog.overlay.create(a)
				}
			});
	b.extend(b.ui.dialog.overlay, {
		instances : [],
		oldInstances : [],
		maxZ : 0,
		events : b.map(
				"focus,mousedown,mouseup,keydown,keypress,click".split(","),
				function(a) {
					return a + ".dialog-overlay"
				}).join(" "),
		create : function(a) {
			if (this.instances.length === 0) {
				setTimeout(function() {
					b.ui.dialog.overlay.instances.length
							&& b(document).bind(b.ui.dialog.overlay.events,
									function(h) {
										if (b(h.target).zIndex() < b.ui.dialog.overlay.maxZ)
											return false
									})
				}, 1);
				b(document).bind("keydown.dialog-overlay", function(h) {
					if (a.options.closeOnEscape && h.keyCode
							&& h.keyCode === b.ui.keyCode.ESCAPE) {
						a.close(h);
						h.preventDefault()
					}
				});
				b(window).bind("resize.dialog-overlay",
						b.ui.dialog.overlay.resize)
			}
			var c = (this.oldInstances.pop() || b("<div></div>")
					.addClass("ui-widget-overlay")).appendTo(document.body)
					.css({
								width : this.width(),
								height : this.height()
							});
			b.fn.bgiframe && c.bgiframe();
			this.instances.push(c);
			return c
		},
		destroy : function(a) {
			var c = b.inArray(a, this.instances);
			c != -1 && this.oldInstances.push(this.instances.splice(c, 1)[0]);
			this.instances.length === 0
					&& b([document, window]).unbind(".dialog-overlay");
			a.remove();
			var h = 0;
			b.each(this.instances, function() {
						h = Math.max(h, this.css("z-index"))
					});
			this.maxZ = h
		},
		height : function() {
			var a, c;
			if (b.browser.msie && b.browser.version < 7) {
				a = Math.max(document.documentElement.scrollHeight,
						document.body.scrollHeight);
				c = Math.max(document.documentElement.offsetHeight,
						document.body.offsetHeight);
				return a < c ? b(window).height() + "px" : a + "px"
			} else
				return b(document).height() + "px"
		},
		width : function() {
			var a, c;
			if (b.browser.msie && b.browser.version < 7) {
				a = Math.max(document.documentElement.scrollWidth,
						document.body.scrollWidth);
				c = Math.max(document.documentElement.offsetWidth,
						document.body.offsetWidth);
				return a < c ? b(window).width() + "px" : a + "px"
			} else
				return b(document).width() + "px"
		},
		resize : function() {
			var a = b([]);
			b.each(b.ui.dialog.overlay.instances, function() {
						a = a.add(this)
					});
			a.css({
						width : 0,
						height : 0
					}).css({
						width : b.ui.dialog.overlay.width(),
						height : b.ui.dialog.overlay.height()
					})
		}
	});
	b.extend(b.ui.dialog.overlay.prototype, {
				destroy : function() {
					b.ui.dialog.overlay.destroy(this.$el)
				}
			})
})(jQuery);
(function(b) {
	b.ui = b.ui || {};
	var d = /left|center|right/, e = /top|center|bottom/, f = b.fn.position, g = b.fn.offset;
	b.fn.position = function(a) {
		if (!a || !a.of)
			return f.apply(this, arguments);
		a = b.extend({}, a);
		var c = b(a.of), h = c[0], i = (a.collision || "flip").split(" "), j = a.offset
				? a.offset.split(" ")
				: [0, 0], n, o, l;
		if (h.nodeType === 9) {
			n = c.width();
			o = c.height();
			l = {
				top : 0,
				left : 0
			}
		} else if (h.setTimeout) {
			n = c.width();
			o = c.height();
			l = {
				top : c.scrollTop(),
				left : c.scrollLeft()
			}
		} else if (h.preventDefault) {
			a.at = "left top";
			n = o = 0;
			l = {
				top : a.of.pageY,
				left : a.of.pageX
			}
		} else {
			n = c.outerWidth();
			o = c.outerHeight();
			l = c.offset()
		}
		b.each(["my", "at"], function() {
					var k = (a[this] || "").split(" ");
					if (k.length === 1)
						k = d.test(k[0]) ? k.concat(["center"]) : e.test(k[0])
								? ["center"].concat(k)
								: ["center", "center"];
					k[0] = d.test(k[0]) ? k[0] : "center";
					k[1] = e.test(k[1]) ? k[1] : "center";
					a[this] = k
				});
		if (i.length === 1)
			i[1] = i[0];
		j[0] = parseInt(j[0], 10) || 0;
		if (j.length === 1)
			j[1] = j[0];
		j[1] = parseInt(j[1], 10) || 0;
		if (a.at[0] === "right")
			l.left += n;
		else if (a.at[0] === "center")
			l.left += n / 2;
		if (a.at[1] === "bottom")
			l.top += o;
		else if (a.at[1] === "center")
			l.top += o / 2;
		l.left += j[0];
		l.top += j[1];
		return this.each(function() {
			var k = b(this), m = k.outerWidth(), p = k.outerHeight(), q = parseInt(b
					.curCSS(this, "marginLeft", true))
					|| 0, s = parseInt(b.curCSS(this, "marginTop", true)) || 0, r = m
					+ q + (parseInt(b.curCSS(this, "marginRight", true)) || 0), u = p
					+ s + (parseInt(b.curCSS(this, "marginBottom", true)) || 0), v = b
					.extend({}, l), w;
			if (a.my[0] === "right")
				v.left -= m;
			else if (a.my[0] === "center")
				v.left -= m / 2;
			if (a.my[1] === "bottom")
				v.top -= p;
			else if (a.my[1] === "center")
				v.top -= p / 2;
			v.left = Math.round(v.left);
			v.top = Math.round(v.top);
			w = {
				left : v.left - q,
				top : v.top - s
			};
			b.each(["left", "top"], function(y, B) {
						b.ui.position[i[y]] && b.ui.position[i[y]][B](v, {
									targetWidth : n,
									targetHeight : o,
									elemWidth : m,
									elemHeight : p,
									collisionPosition : w,
									collisionWidth : r,
									collisionHeight : u,
									offset : j,
									my : a.my,
									at : a.at
								})
					});
			b.fn.bgiframe && k.bgiframe();
			k.offset(b.extend(v, {
						using : a.using
					}))
		})
	};
	b.ui.position = {
		fit : {
			left : function(a, c) {
				var h = b(window);
				h = c.collisionPosition.left + c.collisionWidth - h.width()
						- h.scrollLeft();
				a.left = h > 0 ? a.left - h : Math.max(a.left
								- c.collisionPosition.left, a.left)
			},
			top : function(a, c) {
				var h = b(window);
				h = c.collisionPosition.top + c.collisionHeight - h.height()
						- h.scrollTop();
				a.top = h > 0 ? a.top - h : Math.max(a.top
								- c.collisionPosition.top, a.top)
			}
		},
		flip : {
			left : function(a, c) {
				if (c.at[0] !== "center") {
					var h = b(window);
					h = c.collisionPosition.left + c.collisionWidth - h.width()
							- h.scrollLeft();
					var i = c.my[0] === "left"
							? -c.elemWidth
							: c.my[0] === "right" ? c.elemWidth : 0, j = c.at[0] === "left"
							? c.targetWidth
							: -c.targetWidth, n = -2 * c.offset[0];
					a.left += c.collisionPosition.left < 0 ? i + j + n : h > 0
							? i + j + n
							: 0
				}
			},
			top : function(a, c) {
				if (c.at[1] !== "center") {
					var h = b(window);
					h = c.collisionPosition.top + c.collisionHeight
							- h.height() - h.scrollTop();
					var i = c.my[1] === "top"
							? -c.elemHeight
							: c.my[1] === "bottom" ? c.elemHeight : 0, j = c.at[1] === "top"
							? c.targetHeight
							: -c.targetHeight, n = -2 * c.offset[1];
					a.top += c.collisionPosition.top < 0 ? i + j + n : h > 0
							? i + j + n
							: 0
				}
			}
		}
	};
	if (!b.offset.setOffset) {
		b.offset.setOffset = function(a, c) {
			if (/static/.test(b.curCSS(a, "position")))
				a.style.position = "relative";
			var h = b(a), i = h.offset(), j = parseInt(
					b.curCSS(a, "top", true), 10)
					|| 0, n = parseInt(b.curCSS(a, "left", true), 10) || 0;
			i = {
				top : c.top - i.top + j,
				left : c.left - i.left + n
			};
			"using" in c ? c.using.call(a, i) : h.css(i)
		};
		b.fn.offset = function(a) {
			var c = this[0];
			if (!c || !c.ownerDocument)
				return null;
			if (a)
				return this.each(function() {
							b.offset.setOffset(this, a)
						});
			return g.call(this)
		}
	}
})(jQuery);
(function(b, d) {
	b.widget("ui.progressbar", {
		options : {
			value : 0,
			max : 100
		},
		min : 0,
		_create : function() {
			this.element
					.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all")
					.attr({
								role : "progressbar",
								"aria-valuemin" : this.min,
								"aria-valuemax" : this.options.max,
								"aria-valuenow" : this._value()
							});
			this.valueDiv = b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>")
					.appendTo(this.element);
			this.oldValue = this._value();
			this._refreshValue()
		},
		destroy : function() {
			this.element
					.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all")
					.removeAttr("role").removeAttr("aria-valuemin")
					.removeAttr("aria-valuemax").removeAttr("aria-valuenow");
			this.valueDiv.remove();
			b.Widget.prototype.destroy.apply(this, arguments)
		},
		value : function(e) {
			if (e === d)
				return this._value();
			this._setOption("value", e);
			return this
		},
		_setOption : function(e, f) {
			if (e === "value") {
				this.options.value = f;
				this._refreshValue();
				this._value() === this.options.max && this._trigger("complete")
			}
			b.Widget.prototype._setOption.apply(this, arguments)
		},
		_value : function() {
			var e = this.options.value;
			if (typeof e !== "number")
				e = 0;
			return Math.min(this.options.max, Math.max(this.min, e))
		},
		_percentage : function() {
			return 100 * this._value() / this.options.max
		},
		_refreshValue : function() {
			var e = this.value(), f = this._percentage();
			if (this.oldValue !== e) {
				this.oldValue = e;
				this._trigger("change")
			}
			this.valueDiv.toggle(e > this.min).toggleClass("ui-corner-right",
					e === this.options.max).width(f.toFixed(0) + "%");
			this.element.attr("aria-valuenow", e)
		}
	});
	b.extend(b.ui.progressbar, {
				version : "1.8.12"
			})
})(jQuery);
(function(b) {
	b.widget("ui.slider", b.ui.mouse, {
		widgetEventPrefix : "slide",
		options : {
			animate : false,
			distance : 0,
			max : 100,
			min : 0,
			orientation : "horizontal",
			range : false,
			step : 1,
			value : 0,
			values : null
		},
		_create : function() {
			var d = this, e = this.options;
			this._mouseSliding = this._keySliding = false;
			this._animateOff = true;
			this._handleIndex = null;
			this._detectOrientation();
			this._mouseInit();
			this.element.addClass("ui-slider ui-slider-" + this.orientation
					+ " ui-widget ui-widget-content ui-corner-all");
			e.disabled
					&& this.element.addClass("ui-slider-disabled ui-disabled");
			this.range = b([]);
			if (e.range) {
				if (e.range === true) {
					this.range = b("<div></div>");
					if (!e.values)
						e.values = [this._valueMin(), this._valueMin()];
					if (e.values.length && e.values.length !== 2)
						e.values = [e.values[0], e.values[0]]
				} else
					this.range = b("<div></div>");
				this.range.appendTo(this.element).addClass("ui-slider-range");
				if (e.range === "min" || e.range === "max")
					this.range.addClass("ui-slider-range-" + e.range);
				this.range.addClass("ui-widget-header")
			}
			b(".ui-slider-handle", this.element).length === 0
					&& b("<a href='#'></a>").appendTo(this.element)
							.addClass("ui-slider-handle");
			if (e.values && e.values.length)
				for (; b(".ui-slider-handle", this.element).length < e.values.length;)
					b("<a href='#'></a>").appendTo(this.element)
							.addClass("ui-slider-handle");
			this.handles = b(".ui-slider-handle", this.element)
					.addClass("ui-state-default ui-corner-all");
			this.handle = this.handles.eq(0);
			this.handles.add(this.range).filter("a").click(function(f) {
						f.preventDefault()
					}).hover(function() {
						e.disabled || b(this).addClass("ui-state-hover")
					}, function() {
						b(this).removeClass("ui-state-hover")
					}).focus(function() {
				if (e.disabled)
					b(this).blur();
				else {
					b(".ui-slider .ui-state-focus")
							.removeClass("ui-state-focus");
					b(this).addClass("ui-state-focus")
				}
			}).blur(function() {
						b(this).removeClass("ui-state-focus")
					});
			this.handles.each(function(f) {
						b(this).data("index.ui-slider-handle", f)
					});
			this.handles.keydown(function(f) {
				var g = true, a = b(this).data("index.ui-slider-handle"), c, h, i;
				if (!d.options.disabled) {
					switch (f.keyCode) {
						case b.ui.keyCode.HOME :
						case b.ui.keyCode.END :
						case b.ui.keyCode.PAGE_UP :
						case b.ui.keyCode.PAGE_DOWN :
						case b.ui.keyCode.UP :
						case b.ui.keyCode.RIGHT :
						case b.ui.keyCode.DOWN :
						case b.ui.keyCode.LEFT :
							g = false;
							if (!d._keySliding) {
								d._keySliding = true;
								b(this).addClass("ui-state-active");
								c = d._start(f, a);
								if (c === false)
									return
							}
							break
					}
					i = d.options.step;
					c = d.options.values && d.options.values.length ? (h = d
							.values(a)) : (h = d.value());
					switch (f.keyCode) {
						case b.ui.keyCode.HOME :
							h = d._valueMin();
							break;
						case b.ui.keyCode.END :
							h = d._valueMax();
							break;
						case b.ui.keyCode.PAGE_UP :
							h = d._trimAlignValue(c
									+ (d._valueMax() - d._valueMin()) / 5);
							break;
						case b.ui.keyCode.PAGE_DOWN :
							h = d._trimAlignValue(c
									- (d._valueMax() - d._valueMin()) / 5);
							break;
						case b.ui.keyCode.UP :
						case b.ui.keyCode.RIGHT :
							if (c === d._valueMax())
								return;
							h = d._trimAlignValue(c + i);
							break;
						case b.ui.keyCode.DOWN :
						case b.ui.keyCode.LEFT :
							if (c === d._valueMin())
								return;
							h = d._trimAlignValue(c - i);
							break
					}
					d._slide(f, a, h);
					return g
				}
			}).keyup(function(f) {
						var g = b(this).data("index.ui-slider-handle");
						if (d._keySliding) {
							d._keySliding = false;
							d._stop(f, g);
							d._change(f, g);
							b(this).removeClass("ui-state-active")
						}
					});
			this._refreshValue();
			this._animateOff = false
		},
		destroy : function() {
			this.handles.remove();
			this.range.remove();
			this.element
					.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all")
					.removeData("slider").unbind(".slider");
			this._mouseDestroy();
			return this
		},
		_mouseCapture : function(d) {
			var e = this.options, f, g, a, c, h;
			if (e.disabled)
				return false;
			this.elementSize = {
				width : this.element.outerWidth(),
				height : this.element.outerHeight()
			};
			this.elementOffset = this.element.offset();
			f = this._normValueFromMouse({
						x : d.pageX,
						y : d.pageY
					});
			g = this._valueMax() - this._valueMin() + 1;
			c = this;
			this.handles.each(function(i) {
						var j = Math.abs(f - c.values(i));
						if (g > j) {
							g = j;
							a = b(this);
							h = i
						}
					});
			if (e.range === true && this.values(1) === e.min) {
				h += 1;
				a = b(this.handles[h])
			}
			if (this._start(d, h) === false)
				return false;
			this._mouseSliding = true;
			c._handleIndex = h;
			a.addClass("ui-state-active").focus();
			e = a.offset();
			this._clickOffset = !b(d.target).parents().andSelf()
					.is(".ui-slider-handle") ? {
				left : 0,
				top : 0
			} : {
				left : d.pageX - e.left - a.width() / 2,
				top : d.pageY - e.top - a.height() / 2
						- (parseInt(a.css("borderTopWidth"), 10) || 0)
						- (parseInt(a.css("borderBottomWidth"), 10) || 0)
						+ (parseInt(a.css("marginTop"), 10) || 0)
			};
			this.handles.hasClass("ui-state-hover") || this._slide(d, h, f);
			return this._animateOff = true
		},
		_mouseStart : function() {
			return true
		},
		_mouseDrag : function(d) {
			var e = this._normValueFromMouse({
						x : d.pageX,
						y : d.pageY
					});
			this._slide(d, this._handleIndex, e);
			return false
		},
		_mouseStop : function(d) {
			this.handles.removeClass("ui-state-active");
			this._mouseSliding = false;
			this._stop(d, this._handleIndex);
			this._change(d, this._handleIndex);
			this._clickOffset = this._handleIndex = null;
			return this._animateOff = false
		},
		_detectOrientation : function() {
			this.orientation = this.options.orientation === "vertical"
					? "vertical"
					: "horizontal"
		},
		_normValueFromMouse : function(d) {
			var e;
			if (this.orientation === "horizontal") {
				e = this.elementSize.width;
				d = d.x - this.elementOffset.left
						- (this._clickOffset ? this._clickOffset.left : 0)
			} else {
				e = this.elementSize.height;
				d = d.y - this.elementOffset.top
						- (this._clickOffset ? this._clickOffset.top : 0)
			}
			e = d / e;
			if (e > 1)
				e = 1;
			if (e < 0)
				e = 0;
			if (this.orientation === "vertical")
				e = 1 - e;
			d = this._valueMax() - this._valueMin();
			return this._trimAlignValue(this._valueMin() + e * d)
		},
		_start : function(d, e) {
			var f = {
				handle : this.handles[e],
				value : this.value()
			};
			if (this.options.values && this.options.values.length) {
				f.value = this.values(e);
				f.values = this.values()
			}
			return this._trigger("start", d, f)
		},
		_slide : function(d, e, f) {
			var g;
			if (this.options.values && this.options.values.length) {
				g = this.values(e ? 0 : 1);
				if (this.options.values.length === 2
						&& this.options.range === true
						&& (e === 0 && f > g || e === 1 && f < g))
					f = g;
				if (f !== this.values(e)) {
					g = this.values();
					g[e] = f;
					d = this._trigger("slide", d, {
								handle : this.handles[e],
								value : f,
								values : g
							});
					this.values(e ? 0 : 1);
					d !== false && this.values(e, f, true)
				}
			} else if (f !== this.value()) {
				d = this._trigger("slide", d, {
							handle : this.handles[e],
							value : f
						});
				d !== false && this.value(f)
			}
		},
		_stop : function(d, e) {
			var f = {
				handle : this.handles[e],
				value : this.value()
			};
			if (this.options.values && this.options.values.length) {
				f.value = this.values(e);
				f.values = this.values()
			}
			this._trigger("stop", d, f)
		},
		_change : function(d, e) {
			if (!this._keySliding && !this._mouseSliding) {
				var f = {
					handle : this.handles[e],
					value : this.value()
				};
				if (this.options.values && this.options.values.length) {
					f.value = this.values(e);
					f.values = this.values()
				}
				this._trigger("change", d, f)
			}
		},
		value : function(d) {
			if (arguments.length) {
				this.options.value = this._trimAlignValue(d);
				this._refreshValue();
				this._change(null, 0)
			} else
				return this._value()
		},
		values : function(d, e) {
			var f, g, a;
			if (arguments.length > 1) {
				this.options.values[d] = this._trimAlignValue(e);
				this._refreshValue();
				this._change(null, d)
			} else if (arguments.length)
				if (b.isArray(arguments[0])) {
					f = this.options.values;
					g = arguments[0];
					for (a = 0; a < f.length; a += 1) {
						f[a] = this._trimAlignValue(g[a]);
						this._change(null, a)
					}
					this._refreshValue()
				} else
					return this.options.values && this.options.values.length
							? this._values(d)
							: this.value();
			else
				return this._values()
		},
		_setOption : function(d, e) {
			var f, g = 0;
			if (b.isArray(this.options.values))
				g = this.options.values.length;
			b.Widget.prototype._setOption.apply(this, arguments);
			switch (d) {
				case "disabled" :
					if (e) {
						this.handles.filter(".ui-state-focus").blur();
						this.handles.removeClass("ui-state-hover");
						this.handles.attr("disabled", "disabled");
						this.element.addClass("ui-disabled")
					} else {
						this.handles.removeAttr("disabled");
						this.element.removeClass("ui-disabled")
					}
					break;
				case "orientation" :
					this._detectOrientation();
					this.element
							.removeClass("ui-slider-horizontal ui-slider-vertical")
							.addClass("ui-slider-" + this.orientation);
					this._refreshValue();
					break;
				case "value" :
					this._animateOff = true;
					this._refreshValue();
					this._change(null, 0);
					this._animateOff = false;
					break;
				case "values" :
					this._animateOff = true;
					this._refreshValue();
					for (f = 0; f < g; f += 1)
						this._change(null, f);
					this._animateOff = false;
					break
			}
		},
		_value : function() {
			var d = this.options.value;
			return d = this._trimAlignValue(d)
		},
		_values : function(d) {
			var e, f;
			if (arguments.length) {
				e = this.options.values[d];
				return e = this._trimAlignValue(e)
			} else {
				e = this.options.values.slice();
				for (f = 0; f < e.length; f += 1)
					e[f] = this._trimAlignValue(e[f]);
				return e
			}
		},
		_trimAlignValue : function(d) {
			if (d <= this._valueMin())
				return this._valueMin();
			if (d >= this._valueMax())
				return this._valueMax();
			var e = this.options.step > 0 ? this.options.step : 1, f = (d - this
					._valueMin())
					% e;
			alignValue = d - f;
			if (Math.abs(f) * 2 >= e)
				alignValue += f > 0 ? e : -e;
			return parseFloat(alignValue.toFixed(5))
		},
		_valueMin : function() {
			return this.options.min
		},
		_valueMax : function() {
			return this.options.max
		},
		_refreshValue : function() {
			var d = this.options.range, e = this.options, f = this, g = !this._animateOff
					? e.animate
					: false, a, c = {}, h, i, j, n;
			if (this.options.values && this.options.values.length)
				this.handles.each(function(o) {
							a = (f.values(o) - f._valueMin())
									/ (f._valueMax() - f._valueMin()) * 100;
							c[f.orientation === "horizontal"
									? "left"
									: "bottom"] = a + "%";
							b(this).stop(1, 1)[g ? "animate" : "css"](c,
									e.animate);
							if (f.options.range === true)
								if (f.orientation === "horizontal") {
									if (o === 0)
										f.range.stop(1, 1)[g
												? "animate"
												: "css"]({
													left : a + "%"
												}, e.animate);
									if (o === 1)
										f.range[g ? "animate" : "css"]({
													width : a - h + "%"
												}, {
													queue : false,
													duration : e.animate
												})
								} else {
									if (o === 0)
										f.range.stop(1, 1)[g
												? "animate"
												: "css"]({
													bottom : a + "%"
												}, e.animate);
									if (o === 1)
										f.range[g ? "animate" : "css"]({
													height : a - h + "%"
												}, {
													queue : false,
													duration : e.animate
												})
								}
							h = a
						});
			else {
				i = this.value();
				j = this._valueMin();
				n = this._valueMax();
				a = n !== j ? (i - j) / (n - j) * 100 : 0;
				c[f.orientation === "horizontal" ? "left" : "bottom"] = a + "%";
				this.handle.stop(1, 1)[g ? "animate" : "css"](c, e.animate);
				if (d === "min" && this.orientation === "horizontal")
					this.range.stop(1, 1)[g ? "animate" : "css"]({
								width : a + "%"
							}, e.animate);
				if (d === "max" && this.orientation === "horizontal")
					this.range[g ? "animate" : "css"]({
								width : 100 - a + "%"
							}, {
								queue : false,
								duration : e.animate
							});
				if (d === "min" && this.orientation === "vertical")
					this.range.stop(1, 1)[g ? "animate" : "css"]({
								height : a + "%"
							}, e.animate);
				if (d === "max" && this.orientation === "vertical")
					this.range[g ? "animate" : "css"]({
								height : 100 - a + "%"
							}, {
								queue : false,
								duration : e.animate
							})
			}
		}
	});
	b.extend(b.ui.slider, {
				version : "1.8.12"
			})
})(jQuery);
(function(b, d) {
	function e() {
		return ++g
	}
	function f() {
		return ++a
	}
	var g = 0, a = 0;
	b.widget("ui.tabs", {
		options : {
			add : null,
			ajaxOptions : null,
			cache : false,
			cookie : null,
			collapsible : false,
			disable : null,
			disabled : [],
			enable : null,
			event : "click",
			fx : null,
			idPrefix : "ui-tabs-",
			load : null,
			panelTemplate : "<div></div>",
			remove : null,
			select : null,
			show : null,
			spinner : "<em>Loading&#8230;</em>",
			tabTemplate : "<li><a href='#{href}'><span>#{label}</span></a></li>"
		},
		_create : function() {
			this._tabify(true)
		},
		_setOption : function(c, h) {
			if (c == "selected")
				this.options.collapsible && h == this.options.selected
						|| this.select(h);
			else {
				this.options[c] = h;
				this._tabify()
			}
		},
		_tabId : function(c) {
			return c.title
					&& c.title.replace(/\s/g, "_").replace(
							/[^\w\u00c0-\uFFFF-]/g, "")
					|| this.options.idPrefix + e()
		},
		_sanitizeSelector : function(c) {
			return c.replace(/:/g, "\\:")
		},
		_cookie : function() {
			var c = this.cookie
					|| (this.cookie = this.options.cookie.name || "ui-tabs-"
							+ f());
			return b.cookie.apply(null, [c].concat(b.makeArray(arguments)))
		},
		_ui : function(c, h) {
			return {
				tab : c,
				panel : h,
				index : this.anchors.index(c)
			}
		},
		_cleanup : function() {
			this.lis.filter(".ui-state-processing")
					.removeClass("ui-state-processing")
					.find("span:data(label.tabs)").each(function() {
								var c = b(this);
								c.html(c.data("label.tabs"))
										.removeData("label.tabs")
							})
		},
		_tabify : function(c) {
			function h(r, u) {
				r.css("display", "");
				!b.support.opacity && u.opacity
						&& r[0].style.removeAttribute("filter")
			}
			var i = this, j = this.options, n = /^#.+/;
			this.list = this.element.find("ol,ul").eq(0);
			this.lis = b(" > li:has(a[href])", this.list);
			this.anchors = this.lis.map(function() {
						return b("a", this)[0]
					});
			this.panels = b([]);
			this.anchors.each(function(r, u) {
				var v = b(u).attr("href"), w = v.split("#")[0], y;
				if (w
						&& (w === location.toString().split("#")[0] || (y = b("base")[0])
								&& w === y.href)) {
					v = u.hash;
					u.href = v
				}
				if (n.test(v))
					i.panels = i.panels.add(i.element.find(i
							._sanitizeSelector(v)));
				else if (v && v !== "#") {
					b.data(u, "href.tabs", v);
					b.data(u, "load.tabs", v.replace(/#.*$/, ""));
					v = i._tabId(u);
					u.href = "#" + v;
					u = i.element.find("#" + v);
					if (!u.length) {
						u = b(j.panelTemplate)
								.attr("id", v)
								.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom")
								.insertAfter(i.panels[r - 1] || i.list);
						u.data("destroy.tabs", true)
					}
					i.panels = i.panels.add(u)
				} else
					j.disabled.push(r)
			});
			if (c) {
				this.element
						.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
				this.list
						.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");
				this.lis.addClass("ui-state-default ui-corner-top");
				this.panels
						.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");
				if (j.selected === d) {
					location.hash && this.anchors.each(function(r, u) {
								if (u.hash == location.hash) {
									j.selected = r;
									return false
								}
							});
					if (typeof j.selected !== "number" && j.cookie)
						j.selected = parseInt(i._cookie(), 10);
					if (typeof j.selected !== "number"
							&& this.lis.filter(".ui-tabs-selected").length)
						j.selected = this.lis.index(this.lis
								.filter(".ui-tabs-selected"));
					j.selected = j.selected || (this.lis.length ? 0 : -1)
				} else if (j.selected === null)
					j.selected = -1;
				j.selected = j.selected >= 0 && this.anchors[j.selected]
						|| j.selected < 0 ? j.selected : 0;
				j.disabled = b.unique(j.disabled.concat(b.map(this.lis
								.filter(".ui-state-disabled"), function(r) {
							return i.lis.index(r)
						}))).sort();
				b.inArray(j.selected, j.disabled) != -1
						&& j.disabled.splice(b.inArray(j.selected, j.disabled),
								1);
				this.panels.addClass("ui-tabs-hide");
				this.lis.removeClass("ui-tabs-selected ui-state-active");
				if (j.selected >= 0 && this.anchors.length) {
					i.element.find(i
							._sanitizeSelector(i.anchors[j.selected].hash))
							.removeClass("ui-tabs-hide");
					this.lis.eq(j.selected)
							.addClass("ui-tabs-selected ui-state-active");
					i.element.queue("tabs", function() {
						i
								._trigger(
										"show",
										null,
										i
												._ui(
														i.anchors[j.selected],
														i.element
																.find(i
																		._sanitizeSelector(i.anchors[j.selected].hash))[0]))
					});
					this.load(j.selected)
				}
				b(window).bind("unload", function() {
							i.lis.add(i.anchors).unbind(".tabs");
							i.lis = i.anchors = i.panels = null
						})
			} else
				j.selected = this.lis.index(this.lis
						.filter(".ui-tabs-selected"));
			this.element[j.collapsible ? "addClass" : "removeClass"]("ui-tabs-collapsible");
			j.cookie && this._cookie(j.selected, j.cookie);
			c = 0;
			for (var o; o = this.lis[c]; c++)
				b(o)[b.inArray(c, j.disabled) != -1
						&& !b(o).hasClass("ui-tabs-selected")
						? "addClass"
						: "removeClass"]("ui-state-disabled");
			j.cache === false && this.anchors.removeData("cache.tabs");
			this.lis.add(this.anchors).unbind(".tabs");
			if (j.event !== "mouseover") {
				var l = function(r, u) {
					u.is(":not(.ui-state-disabled)")
							&& u.addClass("ui-state-" + r)
				}, k = function(r, u) {
					u.removeClass("ui-state-" + r)
				};
				this.lis.bind("mouseover.tabs", function() {
							l("hover", b(this))
						});
				this.lis.bind("mouseout.tabs", function() {
							k("hover", b(this))
						});
				this.anchors.bind("focus.tabs", function() {
							l("focus", b(this).closest("li"))
						});
				this.anchors.bind("blur.tabs", function() {
							k("focus", b(this).closest("li"))
						})
			}
			var m, p;
			if (j.fx)
				if (b.isArray(j.fx)) {
					m = j.fx[0];
					p = j.fx[1]
				} else
					m = p = j.fx;
			var q = p ? function(r, u) {
				b(r).closest("li").addClass("ui-tabs-selected ui-state-active");
				u.hide().removeClass("ui-tabs-hide").animate(p,
						p.duration || "normal", function() {
							h(u, p);
							i._trigger("show", null, i._ui(r, u[0]))
						})
			}
					: function(r, u) {
						b(r).closest("li")
								.addClass("ui-tabs-selected ui-state-active");
						u.removeClass("ui-tabs-hide");
						i._trigger("show", null, i._ui(r, u[0]))
					}, s = m ? function(r, u) {
				u.animate(m, m.duration || "normal", function() {
							i.lis
									.removeClass("ui-tabs-selected ui-state-active");
							u.addClass("ui-tabs-hide");
							h(u, m);
							i.element.dequeue("tabs")
						})
			}
					: function(r, u) {
						i.lis.removeClass("ui-tabs-selected ui-state-active");
						u.addClass("ui-tabs-hide");
						i.element.dequeue("tabs")
					};
			this.anchors.bind(j.event + ".tabs", function() {
				var r = this, u = b(r).closest("li"), v = i.panels
						.filter(":not(.ui-tabs-hide)"), w = i.element.find(i
						._sanitizeSelector(r.hash));
				if (u.hasClass("ui-tabs-selected")
						&& !j.collapsible
						|| u.hasClass("ui-state-disabled")
						|| u.hasClass("ui-state-processing")
						|| i.panels.filter(":animated").length
						|| i._trigger("select", null, i._ui(this, w[0])) === false) {
					this.blur();
					return false
				}
				j.selected = i.anchors.index(this);
				i.abort();
				if (j.collapsible)
					if (u.hasClass("ui-tabs-selected")) {
						j.selected = -1;
						j.cookie && i._cookie(j.selected, j.cookie);
						i.element.queue("tabs", function() {
									s(r, v)
								}).dequeue("tabs");
						this.blur();
						return false
					} else if (!v.length) {
						j.cookie && i._cookie(j.selected, j.cookie);
						i.element.queue("tabs", function() {
									q(r, w)
								});
						i.load(i.anchors.index(this));
						this.blur();
						return false
					}
				j.cookie && i._cookie(j.selected, j.cookie);
				if (w.length) {
					v.length && i.element.queue("tabs", function() {
								s(r, v)
							});
					i.element.queue("tabs", function() {
								q(r, w)
							});
					i.load(i.anchors.index(this))
				} else
					throw "jQuery UI Tabs: Mismatching fragment identifier.";
				b.browser.msie && this.blur()
			});
			this.anchors.bind("click.tabs", function() {
						return false
					})
		},
		_getIndex : function(c) {
			if (typeof c == "string")
				c = this.anchors
						.index(this.anchors.filter("[href$=" + c + "]"));
			return c
		},
		destroy : function() {
			var c = this.options;
			this.abort();
			this.element
					.unbind(".tabs")
					.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible")
					.removeData("tabs");
			this.list
					.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");
			this.anchors.each(function() {
						var h = b.data(this, "href.tabs");
						if (h)
							this.href = h;
						var i = b(this).unbind(".tabs");
						b.each(["href", "load", "cache"], function(j, n) {
									i.removeData(n + ".tabs")
								})
					});
			this.lis.unbind(".tabs").add(this.panels).each(function() {
				b.data(this, "destroy.tabs")
						? b(this).remove()
						: b(this)
								.removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")
			});
			c.cookie && this._cookie(null, c.cookie);
			return this
		},
		add : function(c, h, i) {
			if (i === d)
				i = this.anchors.length;
			var j = this, n = this.options;
			h = b(n.tabTemplate.replace(/#\{href\}/g, c).replace(/#\{label\}/g,
					h));
			c = !c.indexOf("#") ? c.replace("#", "") : this
					._tabId(b("a", h)[0]);
			h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",
					true);
			var o = j.element.find("#" + c);
			o.length
					|| (o = b(n.panelTemplate).attr("id", c).data(
							"destroy.tabs", true));
			o
					.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");
			if (i >= this.lis.length) {
				h.appendTo(this.list);
				o.appendTo(this.list[0].parentNode)
			} else {
				h.insertBefore(this.lis[i]);
				o.insertBefore(this.panels[i])
			}
			n.disabled = b.map(n.disabled, function(l) {
						return l >= i ? ++l : l
					});
			this._tabify();
			if (this.anchors.length == 1) {
				n.selected = 0;
				h.addClass("ui-tabs-selected ui-state-active");
				o.removeClass("ui-tabs-hide");
				this.element.queue("tabs", function() {
							j._trigger("show", null, j._ui(j.anchors[0],
											j.panels[0]))
						});
				this.load(0)
			}
			this._trigger("add", null, this
							._ui(this.anchors[i], this.panels[i]));
			return this
		},
		remove : function(c) {
			c = this._getIndex(c);
			var h = this.options, i = this.lis.eq(c).remove(), j = this.panels
					.eq(c).remove();
			if (i.hasClass("ui-tabs-selected") && this.anchors.length > 1)
				this.select(c + (c + 1 < this.anchors.length ? 1 : -1));
			h.disabled = b.map(b.grep(h.disabled, function(n) {
								return n != c
							}), function(n) {
						return n >= c ? --n : n
					});
			this._tabify();
			this._trigger("remove", null, this._ui(i.find("a")[0], j[0]));
			return this
		},
		enable : function(c) {
			c = this._getIndex(c);
			var h = this.options;
			if (b.inArray(c, h.disabled) != -1) {
				this.lis.eq(c).removeClass("ui-state-disabled");
				h.disabled = b.grep(h.disabled, function(i) {
							return i != c
						});
				this._trigger("enable", null, this._ui(this.anchors[c],
								this.panels[c]));
				return this
			}
		},
		disable : function(c) {
			c = this._getIndex(c);
			var h = this.options;
			if (c != h.selected) {
				this.lis.eq(c).addClass("ui-state-disabled");
				h.disabled.push(c);
				h.disabled.sort();
				this._trigger("disable", null, this._ui(this.anchors[c],
								this.panels[c]))
			}
			return this
		},
		select : function(c) {
			c = this._getIndex(c);
			if (c == -1)
				if (this.options.collapsible && this.options.selected != -1)
					c = this.options.selected;
				else
					return this;
			this.anchors.eq(c).trigger(this.options.event + ".tabs");
			return this
		},
		load : function(c) {
			c = this._getIndex(c);
			var h = this, i = this.options, j = this.anchors.eq(c)[0], n = b
					.data(j, "load.tabs");
			this.abort();
			if (!n || this.element.queue("tabs").length !== 0
					&& b.data(j, "cache.tabs"))
				this.element.dequeue("tabs");
			else {
				this.lis.eq(c).addClass("ui-state-processing");
				if (i.spinner) {
					var o = b("span", j);
					o.data("label.tabs", o.html()).html(i.spinner)
				}
				this.xhr = b.ajax(b.extend({}, i.ajaxOptions, {
							url : n,
							success : function(l, k) {
								h.element.find(h._sanitizeSelector(j.hash))
										.html(l);
								h._cleanup();
								i.cache && b.data(j, "cache.tabs", true);
								h._trigger("load", null, h._ui(h.anchors[c],
												h.panels[c]));
								try {
									i.ajaxOptions.success(l, k)
								} catch (m) {
								}
							},
							error : function(l, k) {
								h._cleanup();
								h._trigger("load", null, h._ui(h.anchors[c],
												h.panels[c]));
								try {
									i.ajaxOptions.error(l, k, c, j)
								} catch (m) {
								}
							}
						}));
				h.element.dequeue("tabs");
				return this
			}
		},
		abort : function() {
			this.element.queue([]);
			this.panels.stop(false, true);
			this.element
					.queue("tabs", this.element.queue("tabs").splice(-2, 2));
			if (this.xhr) {
				this.xhr.abort();
				delete this.xhr
			}
			this._cleanup();
			return this
		},
		url : function(c, h) {
			this.anchors.eq(c).removeData("cache.tabs").data("load.tabs", h);
			return this
		},
		length : function() {
			return this.anchors.length
		}
	});
	b.extend(b.ui.tabs, {
				version : "1.8.12"
			});
	b.extend(b.ui.tabs.prototype, {
				rotation : null,
				rotate : function(c, h) {
					var i = this, j = this.options, n = i._rotate
							|| (i._rotate = function(o) {
								clearTimeout(i.rotation);
								i.rotation = setTimeout(function() {
											var l = j.selected;
											i.select(++l < i.anchors.length
													? l
													: 0)
										}, c);
								o && o.stopPropagation()
							});
					h = i._unrotate || (i._unrotate = !h ? function(o) {
						o.clientX && i.rotate(null)
					} : function() {
						t = j.selected;
						n()
					});
					if (c) {
						this.element.bind("tabsshow", n);
						this.anchors.bind(j.event + ".tabs", h);
						n()
					} else {
						clearTimeout(i.rotation);
						this.element.unbind("tabsshow", n);
						this.anchors.unbind(j.event + ".tabs", h);
						delete this._rotate;
						delete this._unrotate
					}
					return this
				}
			})
})(jQuery);